Parent obj = new Child ();имеет смысл? - PullRequest
1 голос
/ 06 февраля 2012

В Java:

Parent obj = new Child();

Я создал объект типа Parent.Я предполагаю, что я могу вызывать только методы, определенные в родительском классе.Таким образом, я не могу вызвать «дополнительные» методы, определенные в Child, или получить доступ к переменным, определенным в Child.Поэтому я думаю, что это пустая трата памяти, так как я обновил экземпляр Child, который занимает больше места в памяти, чем Parent.На данный момент я думаю, что это не имеет смысла.Может кто-нибудь, пожалуйста, приведите причину / пример, где это имеет смысл?

Ответы [ 3 ]

4 голосов
/ 06 февраля 2012

Да, это имеет смысл.

Вы бы сделали это, если хотите использовать Child, но ограничите свое взаимодействие с ним Parent методами.

Эта идиома особеннообщее с коллекциями Java:

List<String> myList = new ArrayList<String>();
2 голосов
/ 06 февраля 2012

Да, это часть концепции программирования полиморфизма и наследования.

1 голос
/ 06 февраля 2012

эта идиома используется для поддержки изменения конкретной реализации. Согласно Джошуа Блоху в книге «Эффективная Ява» (пункт 52)

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

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