Sobreescrever métodos

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.