Ola pessoal,
Estou com uma duvida, sei que eh algo bem basico mais ainda me confunfo com isso, tenho um bom conhecimento das diferencas entre o que eh classe, interface, classe abstrata, composicao e etc… mas por exemplo se eu tenho o seguinte :
Uma classe abstract Animal que eh superclasse de Leao, Tigre e Peixe (ou seja essas 3 extends Animal) ok , ate ai tudo bem , depois um interface Ferocidade por exemplo que possui o metodo Rugir , e apenas Leao e Tigre implementam essa interface e usam esse metodo, ou seja Peixe nao, ok ai tudo bem tambem, mas por exemplo agora ta minha duvida
Sei que posso instanciar essas minhas subclasses de 3 formas diferentes :
Animal a = new Leao(); // referencia a Animal
Leao a = new Leao(); // referencia a Leao
Ferocidade a = new Leao(); // referencia a Interface
mas dependendo de como eu instanciar Leao ou seja atraves de um dos 3 acima ganho certas funcionalidade e perco outras, ou seja, posso usar alguns metodos e atributos e tambem deixo de poder usar outros metodos e atributos, entao como faco para usar bem a heranca e interface juntas , como nesse caso mas mesmo assim poder aproveitar de todas a funcionalidades que eles(as) me oferecem.
Obrigado.