Animal(super classe e implementa outra classe que tem o método (x))
canino (extende animal e implementa outra classe que também tem um método chamado (x))
cachorro (extende animal)
Dúvida… o objeto Dog, recebe os métodos implementados pela classe canino?
Agora… se sim… como posso diferenciar se é da super… ou se é da canino?
isso também não seria herança multipla?
Só uma pergunta:
O objeto “Dog” é instancia de quais dessas classes que você escreveu?
Se for a classe Cachorro ele só herdará métodos da classe Animal. edit: Que por sua vez possui o método X, já que esta implementa a interface que define esse método.
Quanto a segunda pergunta: Java não tem herança multipla.
Animal(super classe e implementa outra classe que tem o método (x))
canino (extende animal e implementa outra classe que também tem um método chamado (x))
cachorro (extende animal)
Dúvida… o objeto Dog, recebe os métodos implementados pela classe canino?
Agora… se sim… como posso diferenciar se é da super… ou se é da canino?
isso também não seria herança multipla?[/quote]
Oi!
Isso seria uma herança multipla:
class Dog extends Canino, Animal {}
Em relação aos métodos herdados, se você der um super.metodo(), ele invoca o primeiro método que é implementado por uma classe concreta Pai.
Veja, algo assim:
[code]public class TestClass {
public static void main(String[] args) {
Z zClass = new Z();
zClass.print();
}
}
class X {
void print() {
System.out.println(“Olá x”);
}
}
class Y extends X {
}
class Z extends Y {
void print() {
super.print();
}
}[/code]
A classe Z vai invocar o método print() da classe Pai, Y, mas a classe pai Y não possui implementação do método, herda apenas.
Portanto, o resultado será “Olá x”. Se sobrescrever o método na classe Y, ai sim, ele termina a execução ali, consegue entender?