Присвоение экземпляра экземпляру высшего класса - PullRequest
1 голос
/ 26 января 2011

Почему мы присваиваем экземпляр экземпляру высшего класса? Каковы причины, чтобы сделать это? Например почему мы используем этот код ниже?

List lst = new LinkedList();

Кажется, List является высшим классом LinkedList. Почему мы должны использовать верхний класс «экземпляр вместо унаследованного класса», экземпляр LinkedList, экземпляр.

Кроме того, у меня есть еще один вопрос.

Я видел некоторый код, который назначает экземпляр класса его интерфейсу. Зачем нам нужен этот пример ниже? Я знаю, поскольку мы не можем сгенерировать экземпляр интерфейса, это позволяет нам использовать экземпляр интерфейса. Но какой смысл использовать экземпляр интерфейса?

Apple a = new Apple();
IFruit b = (IFruit) a; (IFruit is the interface of Apple)

Надеюсь, я ясно дал понять. Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 26 января 2011

Программа для интерфейса (абстрактная).

Позже, если вы хотите использовать LinkedList вместо ArrayList, вам просто нужно изменить код одной строки:

List lst = new LinkedList();
2 голосов
/ 26 января 2011

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

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

2 голосов
/ 26 января 2011
List lst = new LinkedList();

здесь List - это интерфейс, LinkedList - его реализация.

Это не относится к подклассу суперкласса.

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

1 голос
/ 26 января 2011

Это «программирование для интерфейса», которое позволяет обмениваться реализацией, не затрагивая остальную часть кода.Таким образом, вы следуете принципу замены Лискова , который является одним из пяти SOLID принципов (один из моих лучших «принципов ООП» на данный момент), которые я настоятельно рекомендую ознакомитьсяс.

...