Има ли някаква разлика за кода по-долу
AbstractClass object = new SubClass (); (SubClass е клас, който разширява AbstractClass)
Обект на подклас = нов подклас ();
И в двата сценария подкласът разшири класа "Абстрактен" и приложи методите на Abstract Class
Отговори:
1 за отговор № 1Първият е предпочитан: декларирате променлива от по-общ тип и ако е необходимо, можете полиморфно заменете го с друг обект, стига той да се простира от същия абстрактен клас.
В книгата GoF те посочват този принцип като "Програма за интерфейс, а не за внедряване" (технически AbstractClass
не е интерфейс, той е абстрактен клас, но се прилага същият принцип.)