Herança

Olá, boa noite.

Refente a esta questão:

Se não houvesse herança em Java, como você poderia reaproveitar o código de outra classe?

Dúvida

Existe a possibilidade de se ter um arquivo com várias classes? e tais classes ‘aninhadas’ e podendo utilizar métodos e atributos das outras ?

Abraços

quanto a primeira pergunta, vamos supor a seguinte situação:
Tenho uma classe Pessoa aonde dessa pessoa herdariam as classes Cliente e Funcionario.
Dentro do Cliente e do Funcionario daria pra criar uma instancia de pessoa, e executar os métodos do funcionario chamando a pessoa desse funcionario, por ex.

Funcionario func=new Funcionario();
func.getPessoa().setNome("Mateus");

É uma gambiarra mas funcionaria.
Desculpe a curiosidade mas porque essa pergunta?

Ah e quanto a questao 2, sim é possivel ter varias classes no mesmo arquivo, porém não serão “aninhadas”, serão classes independentes como qualquer outra classe.

[quote=mateusviccari]quanto a primeira pergunta, vamos supor a seguinte situação:
Tenho uma classe Pessoa aonde dessa pessoa herdariam as classes Cliente e Funcionario.
Dentro do Cliente e do Funcionario daria pra criar uma instancia de pessoa, e executar os métodos do funcionario chamando a pessoa desse funcionario, por ex.

Funcionario func=new Funcionario();
func.getPessoa().setNome("Mateus");

É uma gambiarra mas funcionaria.
Desculpe a curiosidade mas porque essa pergunta?

Ah e quanto a questao 2, sim é possivel ter varias classes no mesmo arquivo, porém não serão “aninhadas”, serão classes independentes como qualquer outra classe.[/quote]

xD, brigado por responder, curiosidade mesmo… :smiley:

Abraços

e brigado novamente

Você poderia usar composição. E aliás, ela é geralmente preferível a herança.

Boa noite.
A resposta do mateusviccari foi um exemplo de composição. Você faz Funcionario ser composto de Pessoa. Porém ao invés de instanciar Pessoa dentro de funcionário, seria mais flexível passar uma instância de Pessoa para o construtor ou algum método de Funcionário.
Em resposta à primeira pergunta: usaria composição (creio ser a resposta da maioria). Aliás, procure “Prefira composição em vez de herança”. Irá encontrar este link http://blog.caelum.com.br/como-nao-aprender-orientacao-a-objetos-heranca/ que faz referência à este livro http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683/ref=sr_1_1?ie=UTF8&qid=1339388916&sr=8-1.

Com relação à segunda pergunta: sim é possível, são classes internas. São úteis em alguns casos, mas creio não resolver o problema de “não ter herança”.

Abraços!