Меню сайта
Курсы Java
Мини-чат
поиск
новое на форуме
Tags
Главная » 2011 Декабрь 5 » Пременная типа "интерфейс" со значением типа "класс"
12:49:44 Пременная типа "интерфейс" со значением типа "класс" | |
Вопрос: List list = new ArrayList(); В данном случае не имеют значения конкретные классы, коллекции были выбраны просто так ради примеров. То есть я понимаю - полиморфизм и восходящее преобразование к базовому классу. Переменная list будет иметь тип List, но при этом будут выполняться методы производного класса. Но вот я впритык понять не могу зачем так писать??? Почему просто нельзя написать ArrayList list = new ArrayList(); Ведь данный класс все равно является производным от Лист. Он все равно к примеру ,если написать метод с параметром в виде объекта базового класса и запустить с параметром производного - будет происходить преобразование. Зачем так писать? Ответ: Таким образом гарантируется, что Вы не вызовете лишних методов - только то, что есть в интерфейсе List. И в случае необходимости замены его на LinkedList, Vector, CopyOnWriteArrayList или на собственную реализацию - Вы поменяете только одну строчку. А не будете вычищать по всему коду, где вы тут чего наиспользовали, чего нет в новой реализации. | |
Просмотров: 736 | Добавил: MINIsha |
Всего комментариев: 2 | |
| |