Tenho duas classes, ContaCorrente e
ContaCorrenteEspecial extends ContaCorrente.
tenho um método que só existe na classe filha ContaCorrenteEspecial.
getLimite().
Tenho o seguinte:
ContaCorrente cc;
cc = new ContaCorrenteEspesial(“1101010”);
cc.getLimite();
Isso dá pau, pq a referencia do objeto é a para a classe pai, e o metodo que estou chamando está somente na classe filha.
Como deve ser feito neste caso?
Seria se vc tivesse uma Interface ContaCorrente e as classes ContaCorrente e ContaCorrenteEspecial implementassem o método getLimite (cada uma a seu jeito).
Nesse caso vc tah querendo fazer um Downcasting (uma classe generalizada para uma especializada).
Vc pode criar um método abstrato. Tornando a classe ContaCorrente abstrata.
Meu conhecimento é limitado, mas se eu falei besteira por favor me corrijam :?
No seu caso ele dá erro porque a variável cc é da classe ContaCorrente e só vai funcionar chamar métodos desta classe, a vantagem do polimorfismo com relação a métodos é na subscrição deles, digamos que a classe ContaCorrenteEspecial realizasse a tarefa getLimite() de uma maneira específica desta classe, quando você chamar o método getLimite() deste objeto cc ele realizaria o método da ContaCorrenteEspecial. Esse tipo de coisa tem lógica no fundo, é só você pensar… (pq eu não sei explicar direito)
Espero ter mais ajudado do que confundido.
Flw,
Renan.