#java #полиморфизм
This question already has answers here: Почему необходимо инициализировать коллекции именно так? (4 ответа) Правильно понять полиморфизм (1 ответ) Closed 1 год назад. На собеседовании по java спросили - зачем писать, к примеру, Фигура треугольник = new Треугольник(), а не просто Треугольник треугольник = new Треугольник() и почему это удобно?
Ответы
Ответ 1
Можно здесь много антимоний развести, конечно: что это ни фига не полиморфизьм, что это вообще не об этом, что это и т.д. Отвечу так: Когда пишем: Фигура треугольник = new Треугольник(), мы подразумеваем, что треугольник рассматриваем как наследник класса Фигура (ну или что Треугольник реализует интерфейс Фигура) Что подразумевает, что методы класса/интерфейса Фигура реализованы в классе Треугольник (например Фигура.площадь() - реализуется в разных классах по разному) Кроме этого мы неявно подразумеваем, что возможно где-то есть класс(ы) Четырехугольник, Многоугольник или даже Серо-буро-малиновый-овал, которые также наследники класса Фигура Все это вместе дает нам право сказать, что вместо Треугольник мы переходим на другой уровень абстракции Фигура и можем например рассматривать не отдельные коллекции треугольников, многоугольников, а сразу 1 коллекцию фигур - ну и т.д. и т.п. Далее переходим к заключении, что написавший сию строку прогер - невероятно крут и умеет абстрактно мыслить и все такое прочее.Ответ 2
Конкретно в указанном вами примере - практически ничем. Если это определение локальной переменной в каком-то методе(вероятней всего так), то правильным ответом будет "потому что в компании принято соглашение писать именно так" - ни о каких "удобствах" тут и речи быть не может- просто субьективное предпочтение людей составлявших это самое соглашение. Если же подразумевалось определение приватного поля класса, то конкретно в случае с Java, насколько помню - в сабкласе после вызова конструктора можно будет подменить этот объект на любой другой объект, реализующий интерфейс Треугольник или являющийся наследником одноименного класса - крайне редко необходимая возможность, в общем-то..
Комментариев нет:
Отправить комментарий