Dúvida em OO

2 respostas
peresjuliao

Olá, Javaneses

Tenho uma dúvida com as seguintes estrutura de herança:

class Zing { protected Hmpf h; }

Classe Zing

class Woop extends Zing { }

Classe Woop

class Hmpf { }

Classe Hmpf

Nesse caso eu digo que Woop “é um” Zing. Por que Woop herda de Zing.

E agora no caso de Zing “é um” Woop. Como eu digo?

Zing é um Woop?

2 Respostas

ViniGodoy

Todo woop é um zing, mas nem todo zing é um woop.

Usando termos mais claros permite que você entenda melhor:

class Mamifero {
   protected Mamaria mamaria;
}

public class Cachorro extends Mamifero {}

Todo cachorro é um mamífero. Agora, um mamífero qualquer, é um cachorro? Não. Ele pode ser um gato, um cavalo ou um ser humano.

VantuilJose

O Vini Godoy deu um exemplo perfeito!

Se colocar alguns métodos na classe fica mais fácil de entender:

class Mamifero {  
       protected Mamaria mamaria;  
       public void amamentar(){};
       public void mover(){};
    }  
      
    public class Cachorro extends Mamifero {
    public void darAPata(){};
    public void latir(){};
}
Dessa forma pense que todo cachorro pode amamentar e mover, mas nem todo Mamífero pode latir ou darAPata. Você poderia também ter uma classe Vaca (extends Mamifero), que seria um mamífero e poderia amamentar() e mover(). Isso te permite coisas do tipo:
Mamifero m = new Cachorro();
m.amamentar();

No Livro Use a cabeça Java, da Kathy Sierra, tem algusn exemplos interessantes sobre esses conceitos básicos. Aconselho qualquer iniciante em Java a lê-lo, trata apenas, como já disse, dos conceitos básicos, mas de uma forma muito didática, vc aprende até sem querer, heehee

Criado 24 de fevereiro de 2010
Ultima resposta 24 de fev. de 2010
Respostas 2
Participantes 3