Ответ
Перегрузка метода (overloading) — это создание нескольких методов с одинаковым именем, но разными параметрами (типами, количеством или порядком). Компилятор выбирает нужный метод на основе аргументов.
Пример:
fun sum(a: Int, b: Int) = a + b
fun sum(a: Double, b: Double) = a + b
Переопределение метода (overriding) — это изменение реализации метода в подклассе, унаследованного от суперкласса. Требует аннотации @Override (Java) или override (Kotlin).
Пример:
open class Parent {
open fun show() = println("Parent")
}
class Child : Parent() {
override fun show() = println("Child")
}
Ключевые отличия:
- Перегрузка — в одном классе, переопределение — в иерархии наследования.
- Перегрузка зависит от параметров, переопределение — от сигнатуры (имя + параметры).