Dúvida sobre herança

3 respostas
T

Pessoal, estou com uma dúvida… que não entra na minha cabeça… vamos supor que eu tenha uma classe pai denominada Pessoa… como classe filha eu tenho uma classe denominada Doutor e Pintor.

Se eu fizer uma classe teste… e realizar os seguintes comandos:

Doutor d = new Doutor (“Joao da Silva”);
Pintor p = new Pintor (“Pedro Carlos”);

seria o mesmo que fazer:

Pessoa p[] = Pessoa[2];

p[0] = new Doutor(Joao da Silva);

p[1] = new Pintor (Pedro Carlos);

Os resultados serão o mesmo… correto??? Qual a finalidade de utilizar a variavel definida com tipo “superclasse” … ou seja Pessoa …

Alguem poderia me dar um help… obrigado.

3 Respostas

barney

Tunneler:
Pessoal, estou com uma dúvida… que não entra na minha cabeça… vamos supor que eu tenha uma classe pai denominada Pessoa… como classe filha eu tenho uma classe denominada Doutor e Pintor.

Se eu fizer uma classe teste… e realizar os seguintes comandos:

Doutor d = new Doutor (“Joao da Silva”);
Pintor p = new Pintor (“Pedro Carlos”);

seria o mesmo que fazer:

Pessoa p[] = Pessoa[2];

p[0] = new Doutor(Joao da Silva);

p[1] = new Pintor (Pedro Carlos);

Os resultados serão o mesmo… correto??? Qual a finalidade de utilizar a variavel definida com tipo “superclasse” … ou seja Pessoa …

Alguem poderia me dar um help… obrigado.

Bem Tanto Doutor quanto o Pintor os 2 são Pessoas… Você poderia criar a classe Pessoa
com atributos que Pintor e Doutour tem em comum e simplismente herdar de Pessoa exemplo:
Nome, Idade, sexo… e por aí vai. Na verdade esse conceito é muito utilizado e de grande importância
pensa… se vc tivesse que criar uma classe com o atributo “nome, idade, sexo” várias vezes para
Doutor, Pintor, Pedreiro, Cliente, Jogador e aí que entra Herança.
Epero ter ajudado :wink:

Diabo_Loiro

Então o beneficio que o polimorfismo tras é a abstraçao. por exemplo...

Se eu criar uma função para trabalhar com Doutores e outra para trabalhar com Pintor e as coisas em comum dos 2 como obter o nome posso criar uma funcão que trabalhe com "Pessoas" sendo que ela iria aceitar medicos,pintores,cantores etc.. todos que forem pessoas. Evitando assim criar 2 funções getNameDoutor e getNamePintor.

void examinar(Doutor d){
d.examinar
//codigo de examinar
}

void pintar(Pintor p){
p.pintar();
//codigo para pintar
} 

void getName(Pessoa a){
//obtem o nome de qualquer pessoa.
}
R

vamos la tunneler,

veja este cenario um pouco mais elaborado: imagine o Pintor e Medico herdando da classe Empregado que por sua vez herda de Pessoa:

public static void main(String[] args) {
  Pintor p = new Pintor();
  Medico m = new Medico();
  pagarSalario( p );
  pagarSalario( m );

}
public static void pagarSalario( Empregado e ) {
  //faz lançamento do pagamento de salário
}

faça testes acompanhando o fluxo do código, procure tbm escrever num papel o fluxo para vc entender, então vc começará a entender polimorfismo.

Criado 27 de novembro de 2009
Ultima resposta 27 de nov. de 2009
Respostas 3
Participantes 4