Exemplo de Herança Multipla

Galera eu queria alguns exemplos de heranças multiplas em que eu possa implementar.

Quem poder me ajudar com algumas ideias eu agradeceria.

:?

exemplo: temos a classe Pessoa, Funcionario, Professor

public class funcionario extends pessoa{
}…

public class professor extends funcionario{
}…

Java não suporta Herança Multipla nativamente.

mfp.c, isso nao é herança multipla.

[quote=blima10]Galera eu queria alguns exemplos de heranças multiplas em que eu possa implementar.
Quem poder me ajudar com algumas ideias eu agradeceria.
:?[/quote]

Como já foi dito em Java não existe herança multipla como em C++, por exemplo.

Você pode “simular” herança multipla através de interfaces, definindo assim multiplos comportamentos para seu objeto.

Exemplo:


public interface FerramentaDeCorte {
    public double getCapacidadeDeCorte();
}

public interface FerramentaPneumatica {
    public double getPressaoAr();
}

public class AlicatePneumatico implements FerramentaDeCorte , FerramentaPneumatica {
  
   public double getCapacidadeDeCorte() {return 0.0;}
   public double getPressaoAr() {return 0.0;}
}

Galera eu sei q nao existi herança multipla em java.
Eu flo assim pq eh parecido…

  • eu ainda qru um bom exemplo em q eu possa simular uma herança multipla cm interfaces…

Obrigado pela atenção…

Confira exemplos aqui:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html

Digamos…

public class ArrayList
extends AbstractList
implements List, RandomAccess, Cloneable, Serializable

Um ArrayList se comporta como uma Collection e/ou uma List e/ou um objeto Cloneable e/ou um Serializable e/ou um RandomAccess, sem falar no AbstractList.

Agora…
public class LinkedHashSet
extends HashSet
implements Set, Cloneable, Serializable

Um LinkedHashSet se comporta como uma Collection e/ou um Set e/ou …

Eu acredito que a “herança múltipla” do Java seja quando você usa dois ou mais super classes. Isso seria usar 2 ou + implements, ou 1 extends e mais (ou um) implements.

Nos casos que vc citou há apenas uma super classe. :wink:

Mas não é assim não. As interfaces especificam apenas um “contrato” entre o objeto que implementa e os clientes que a utilizam. Uma classe que começa com “public class MinhaClasse implements Comparable” tem como superclasse a classe Object, e nada mais.

Nossa, falei coisa realmente errada. Eu devia nem estar prestando atenção ou pensando direito… até porque interfaces não tem construtor, certo? Então não teria como usar o super(). Só métodos dele?
Então no Java realmente não existe herança múltipla. Só existe herança então quando usamos extends, né?
Ou, eu acho que na verdade existe sempre herança, porque sempre teremos a classe Object como pai, não é?

[quote=blima10]Galera eu sei q nao existi herança multipla em java.
Eu flo assim pq eh parecido…

  • eu ainda qru um bom exemplo em q eu possa simular uma herança multipla cm interfaces…

Obrigado pela atenção…[/quote]

class Carro{
void cor(){}
void marca(){}
void dataFabricacao(){}
}

class Fiesta extends Carro implements Personalizar{
public void som(){}
public void porta(){}
public void farol(){}
}
interface Personalizar{
void som();
void porta();
void farol();
}

flw!!!

[quote=LPJava]

class Carro{
void cor(){}
void marca(){}
void dataFabricacao(){}
}

class Fiesta extends Carro implements Personalizar{
public void som(){}
public void porta(){}
public void farol(){}
}
interface Personalizar{
void som();
void porta();
void farol();
}

flw!!![/quote]

Um parênteses: Sua interface ficaria melhor com o nome Personalizavel :wink:, Personalizar é uma ação.

interface Personalizavel {
void som();
void porta();
void farol();
}

Pow kra nesse caso você uso na interface apenas metodos da class Fiesta.
cm eu faria para usa metodos da class Carro?
Pow essa eh a unica coisa q tah faltando pra mim…
Agradeço c poder me ajudar…

Abraço…

[quote=blima10]Pow kra nesse caso você uso na interface apenas metodos da class Fiesta.
cm eu faria para usa metodos da class Carro?
Pow essa eh a unica coisa q tah faltando pra mim…
Agradeço c poder me ajudar…

Abraço…[/quote]

é somente vc subscrever o metodo… veja se é isso:

class Fiesta extends Carro implements Personalizar{ public void som(){} public void porta(){} public void farol(){} void cor(){//subscrita} void marca(){//subscrita} }

valeu pela dica, preciso estudar nomeações :smiley:

flw!