Opa
Tenho classe C e B.
Classe C tenho o metodo getCoxinha() e minha classe C herda a classe B.
Se eu fizer
B b = new C();
Eu não consigo acessar o getCoxinha(). Pq? Como que eu faço para a classe B ‘assumir’ que é outra classe?
[]'s
Opa
Tenho classe C e B.
Classe C tenho o metodo getCoxinha() e minha classe C herda a classe B.
Se eu fizer
B b = new C();
Eu não consigo acessar o getCoxinha(). Pq? Como que eu faço para a classe B ‘assumir’ que é outra classe?
[]'s
Olá!
O identificador B não sabe que na memória está sua subclasse, ou seja, uma classe mais especializada.
Vale a pena dar uma olhadinha nesta traduçao do ingles: Como meu cachorro aprendeu herança:
http://markmail.org/download.xqy?id=pxskptzqkbibbtyl&number=1
Boa leitura!
Então eu deveria fazer como? Instanciar o proprio objeto que eu quero?
C c = new C();
Basicamente sim,
mas vai depender do que tu queres.
já leu aquele documento?
Entendeu herança e polimorfismo?
Att,
Quando uma classe herda outra ela herda todos os seus atributos e métodos públicos ou protected.
Ou seja, se vc tem uma C que herda B, C herda os atributos e métodos de B, mas B não herda nada de C.
É como pai e filho, um filho herda caracteristicas de seu pai, mas a recíproca não é verdadeira.
Acabei de ler…eu entendi sim…eu ia conseguir fazer isso que eu qria se o getCoxinha() fosse um método sobrescrito da classe Pai, mas ele é um método novo e por isso não consigo acessar ele através do Pai ( independente de fazer C c = new B() ), to certo?
eu posso extender a classe C em B?
public class B extends C{}
public class C extends B {}
Isso é gambiarra? haha
Desse jeito eu teria todos os métodos de todos os lados haha
Acho que o compilador nem deixa… pensa comigo, vc estaria colocando dois espelhos em um angulo de 0 graus, ou seja, formando infinitas imagens, pois B herdaria de C, que herda o próprio B, que herda de C, que herda de B, que herda de… e assim infinitamente, use herança se isso fizer sentido… um bom método é dar bine concisos a suas classes… na sua colocação acima, seria como dizer que Ferrari herda Carro e Carro herda Ferrari ?? Você acha que todo Carro é uma Ferrari ??? Pense bem no que quer primeiro para depois aplicar a herança…
Falows
ERRATA:
Entendi
Mas eu precisaria passar uma instancia generica ao inves da especifica pq senao vou ter q criar if enorme pra fazer a mesma chamada…
qual a sua situação ?? explique aí pra vermos o que se pode fazer…
cara é o seguinte,
Na hora de compilar o compilador verifica as classes e tals… ele deixa o objeto ser criado na instancia de uma super Classe (OOP), porém o mestods que vc vai poder acessar vai ser os metodos da classe da esquerda. por isso não vai ter o metodo coxinha que tem na classe da direito.
caso necessário faça uma subscrita ou faça uma interface que todas implemente. Dê uma olhada na coesão de sua classe poste ela inteira para ficar mais fácil.
Abraço!