Sobreescrever métodos

3 respostas
Sleipbr

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?

3 Respostas

ViniGodoy

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.

Sleipbr

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:

public interface Comportamentos {

	public void Buzina();
	
}
public class Veiculos {

	public void Andar() {
		System.out.println("Vum Vum");
	}
	
}
public class Carro extends Veiculos implements Comportamentos {

	public void Buzina() {
		System.out.println("Bip bip");
	}
	
	public void Andar() {
		System.out.println("Vum...Vum...Vummmmmmmmmmmmmmmmmmmmmm");
	}
	
}

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".

ViniGodoy

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.

Criado 25 de maio de 2012
Ultima resposta 27 de mai. de 2012
Respostas 3
Participantes 2