Во -первых, давайте посмотрим на краткое определение перегрузки и перезагрузки (переписывание):
Перегрузка метода: если два метода имеют одинаковое имя метода, но параметры противоречивы, то один метод является перегрузкой другого метода.
Переопределение метода: если метод определяется в подклассе, его имя, тип возврата и подпись параметра соответствует имени, тип возврата и подписи параметров метода в родительском классе, то можно сказать, что метод подкласса охватывает Методы родительского класса
Давайте сосредоточимся на проблеме покрытия, взяв следующий код в качестве примера:
Public Class People {public String getName () {return "People"; New People (); Результат - студенты pp = new Student ();Приведенный выше результат показывает, что метод GetName класса студента успешно перезаписывает метод родительского класса
Давайте посмотрим на наложение переменных:
Public Class People {Защищенное имя = "People"; out .println (p.name); // Результат пробега - People Student S = New Student (); System.out .println (pp.name); // Результат запуска - люди}Запустив результаты, я обнаружил, что наложение переменных на самом деле отличается от метода.
По моим собственным словам: охват переменных может рассматриваться только как наполовину выпеченное покрытие.
В противном случае, повышение не произойдет, если произойдет потеря данных
Люди pp = new Student ();
В моем личном опыте: освещение переменных легко допустить ошибки. Это заставляет людей чувствовать, что они вернулись к наследству C ++ [это не наследство C ++ с виртуальным]
Наконец, давайте посмотрим на другой кусок кода:
Public Class People {Защищенное имя = "People"; String [] args) {people p = new People (); getName :::::::::::::: ::::::::::::::::: ::::::::::::::::::::::: .println (pp.getName ()); // Результат запуска - студент}Очевидно, что такое покрытие является более полезным покрытием для нас, потому что таким образом мы можем достичь цели абстрагирования конкретных объектов в общие объекты и реальный полиморфизм.
Выше всего мое личное мнение.