2014-08-27 6 views
1

от А java tutorialПереопределения методы из разных классов в Java

  • подкласс в пределах того же пакета в качестве родительского класса этого экземпляра может переопределить любой метод суперкласса, который не объявлен частным или окончательными.

  • Подкласс в другой упаковке может переопределять не конечные методы, объявленные публичными или защищенными.

В чем разница то? Если метод не объявлена ​​частным, то он должен быть открытым или защищенным нет?

ответ

2

Собственно, нет.

Способ может быть общедоступным, защищенным, приватным или пакет частный. Этот метод является закрытым, если вы не указали модификатор доступа.

Очевидно, что класс из другого пакета не может перезаписывать частные члены пакета.

2

Разница заключается в модификаторе доступа default (или package-private). Если вы не укажете модификатор доступа, доступ к нему могут получить только другие классы в одном пакете, независимо от того, являются ли они подклассами или нет.

Для получения дополнительной информации: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

3

Это пункты можно перефразировать как: вы можете переопределить только метод, к которому ваш класс иметь доступ к, и если этот метод не является окончательным.

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

Если производный класс находится в том же пакете, что и базовый класс, то вы также можете переопределить не конечные методы без модификатора доступа (с защитой от пакетов).

Вы никогда не сможете переопределить частные методы.

Смежные вопросы