переопределение статического метода и финального метода - PullRequest
2 голосов
/ 17 декабря 2011

Я знаю в Java , static метод не может быть переопределен подклассом.

Два вопроса:

1. Почему это так?Может ли кто-нибудь объяснить мне причину этого?

2. Может ли подкласс переопределить метод final в суперклассе?

1 Ответ

12 голосов
/ 17 декабря 2011

Статические методы не вызываются в конкретном экземпляре - поэтому они не могут быть вызваны полиморфно. Они вызываются для самого типа - ничто в привязке не зависит от какой-либо информации, доступной только во время выполнения. Суть полиморфных вызовов заключается в том, что реализация метода, которая в итоге выполняется, зависит от типа времени выполнения цели вызова; как таковой нет цели для статических вызовов методов.

Нет, подклассы не могут переопределять финальные методы - суть создания метода final состоит в том, чтобы предотвратить его переопределение.

...