Existe alguma diferença para o código abaixo?
Objeto AbstractClass = new SubClass (); (SubClass é uma classe que estendeu o AbstractClass)
SubClass object = new SubClass ();
Nos dois cenários a subclasse ampliou a Classe Abstract e implementou os métodos da Classe Abstract
Respostas:
1 para resposta № 1O primeiro é o preferido: você está declarando uma variável de um tipo mais geral e, se necessário, você pode polimorficamente substituí-lo por outra instância de objeto, desde que também se estenda da mesma classe abstrata.
No livro GoF, eles afirmam este princípio como "Programa para uma interface, não uma implementação" (tecnicamente AbstractClass
Não é uma interface, é uma classe abstrata, mas o mesmo princípio se aplica.