В чем разница между переопределением метода и сокрытием метода? - PullRequest
0 голосов
/ 13 октября 2019

Что ж, я узнал, что переопределение метода выполняется в нестатических методах, в то время как скрытие метода выполняется для статического метода. Так в чем же разница между ними, если в методе overriding метод дочернего класса переопределяет метод родительского класса, так что выполняется только метод дочернего класса?

В то время как в методе скрытия происходит то же самое, чтометод дочернего класса скрывает метод родительского класса, так что выполняется только метод дочернего класса?

В коде ниже я приведу вывод, что обе программы одинаковы, так в чем разница между переопределением исокрытие.

a pic featuring code

another pic featuring code

1 Ответ

0 голосов
/ 13 октября 2019

Разницу можно увидеть по уже упомянутому коду @SMA:

public static final void main(String... strings) {
    final Child obj = new MainClass.Child();
    obj.f1();
    final Parent p = obj;
    p.f1();
}

приведет к:
дочернему классу
дочернему классу

, тогда как статическая альтернатива будетпривести к:
Дочернему классу
Родительскому классу

Таким образом, в случае переопределения родительский метод может быть вызван только из метода переопределения. В то время как в статическом случае скрытый метод все еще существует и будет вызываться при использовании соответствующего контекста (следовательно, родительского класса).
(я знаю, что вызов статических методов через экземпляры класса не является хорошей практикой, но это помогаетчтобы проиллюстрировать ответ на этот вопрос.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...