Existe 2 tipo de heranças. Comportamental e Direta. Mas eu fiquei pensando. Da para fazer uma herança direta ser comportamental sem usar o implements em uma interface…
extender uma superclasse e na subclasse sobrepô o método, sobreescrever. Não seria uma solução válida para se tornar uma herança direta em comportamental também?
O que seu professor está chamando de herança comportamental?
Pode reformular essa frase?
Não deu para entender o que você quis dizer com isso.
Herança comportamental é o implements, uma interface vai ter a assinatura do método e as classes que implementar vão te que assumir a responsabilidade de ter esse método de modo particular, na classe é que será determinado como o método vai funcionar.
tipo:
[code]public interface Comportamentos {
public void Buzina();
}[/code]
[code]public class Veiculos {
public void Andar() {
System.out.println("Vum Vum");
}
}[/code]
[code]public class Carro extends Veiculos implements Comportamentos {
public void Buzina() {
System.out.println("Bip bip");
}
public void Andar() {
System.out.println("Vum...Vum...Vummmmmmmmmmmmmmmmmmmmmm");
}
}
[/code]
Carro extends Veiculos, em veiculos andar seria Vum Vum, mas eu fiz o método Andar novamente so que ele será Vum…Vum…Vummmmmmmm, isso que eu fiz achei parecido com o implements interface, so que na interface so existe a assinatura do método e a classe será “obrigada” a ter esse método. Mas Andar em Carro está bem especializado também já que quando sobreescrevir o método e ficou diferente da classe “pai”.
Pois é, queria saber de onde surgiram essas definições, pois toda herança (mesmo a direta) é comportamental. Sempre que você herda um método, está assumindo a responsabilidade de manter seu contrato.
Enfim, creio que dentro dessas definições, você está certo. Pode-se transformar uma herança comportamental em direta através de uma classe abstrata.