Пятница, 2025-07-18, 15:03:11
Главная Регистрация RSS
Приветствую Вас, Гость
Форма входа
Мини-чат
Главная » 2011 » Декабрь » 05
Вопрос:

List list = new ArrayList();

В данном случае не имеют значения конкретные классы, коллекции были выбраны просто так ради примеров. То есть я понимаю - полиморфизм и восходящее преобразование к базовому классу. Переменная list будет иметь тип List, но при этом будут выполняться методы производного класса. Но вот я впритык понять не могу зачем так писать??? Почему просто нельзя написать

ArrayList list = new ArrayList();

Ведь данный класс все равно является производным от Лист. Он все равно к примеру ,если написать метод с параметром в виде объекта базового класса и запустить с параметром производного - будет происходить преобразование. Зачем так писать?

Ответ:

Таким образом гарантируется, что Вы не вызовете лишних методов - только то, что есть в интерфейсе List. И в случае необходимости замены его на LinkedList, Vector, CopyOnWriteArrayList или на собственную реализацию - Вы поменяете только одну строчк ... Читать дальше »