Переопределение и перегрузка метода — это разные проявления полиморфизма Java. Переопределение — это проявление полиморфизма между родительским и подклассами, а перегрузка — проявление полиморфизма в классе.
Если метод, определенный в подклассе, имеет то же имя и параметры, что и его родительский класс, мы говорим, что метод является переопределяющим. Когда объект подкласса использует этот метод, он вызывает определение в подклассе. Для этого определение в родительском классе кажется «экранированным».
Если в классе определено несколько методов с одинаковым именем и они могут иметь разное количество параметров, разные типы параметров или разный порядок параметров, это называется перегрузкой метода. Его нельзя перегрузить разрешениями доступа, типами возвращаемых значений или выброшенными исключениями.
1. Перегрузка метода (перегрузка)
Концепция: Проще говоря: перегрузка метода — это несколько методов реализации одной и той же функции класса. Какой метод используется, зависит от параметров, заданных вызывающим объектом.
Что следует отметить:
(1) Имена методов одинаковы (2) Типы параметров, количество и порядок методов не различаются хотя бы в одном из них (3) Типы возвращаемых значений методов могут различаться (4) Модификаторы методы могут быть разными. Если различаются только типы возвращаемых значений, это не может представлять собой перегрузку. Если перегрузка имеет только разные символы модификатора доступа к управлению, она не может представлять собой перегрузку.
Перегруженный метод может изменить тип возвращаемого значения.
2. Переопределение метода (переопределение)
Концепция: Проще говоря: покрытие метода означает, что у подкласса есть метод, который имеет то же имя, тип возвращаемого значения и параметры, что и метод родительского класса. Тогда мы говорим, что метод подкласса переопределяет метод родительского класса. сорт.
Примечание. Существует множество условий покрытия метода. Вообще говоря, есть два момента, на которые следует обратить внимание:
(1) Тип возвращаемого значения, параметры и имя метода метода подкласса должны быть точно такими же, как тип возвращаемого значения, параметры и имя метода метода родительского класса, в противном случае произойдет ошибка компиляции.
(2) Методы подкласса не могут уменьшать права доступа методов родительского класса (возможно обратное).
пример:
Переопределить экземпляр