Duvida sobre herança e polimorfismo  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
du123
JavaChild

Membro desde: 27/11/2006 11:19:22
Mensagens: 127
Offline

Bom dia!

Estou com duas classes aqui... funcionário e gerente... gerente é subclasse de funcionário... seguindo o conceito de que gerente é um funcionario...

como não quero que sejam instanciados funcionários, coloquei-a como classe abstrata... e tenho um método abstrado nesse classe funcionario, chamado "promove()" ... ele altera o nivel do gerente ( de B para A, por exemplo ... )

Acontece que agora gostaria de criar uma classe diretor, que extenda de funcionario, mas nao gostaria que ela tivesse o método promove... e sou obrigado a colocar, caso contrario nao compila...

Qual seria a forma mais correta de agir, neste caso?

Obrigado =)

Keep studying, little grasshopper... =)
Deh
JavaGuru
[Avatar]

Membro desde: 18/04/2006 23:02:24
Mensagens: 244
Localização: Florianópolis - SC
Offline

você poderia criar uma interface, que tenha o método "promover()", e implementar somente nas classes que acha necessário!

http://www.guj.com.br/posts/list/49267.java

nesse tópico aqui tem uma mega-aula do nosso colega mantu =]
cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

Eu penso da seguinte maneira:

1) Não implementa o método promove(). Se ele retornar void, simples. fica um método inútil que não faz nada e não oferece perigo. Se retornar boolean põe ele pra retornar sempre false, quer dizer, seu diretor nunca será promovido.

2) Cria duas interfaces para funcionários: FuncionarioPromovivel e FuncionarioNaoPromovivel. O segundo tipo não possui o método promove();

3) Idéia semelhante a do item 2, porém com método abstrato.

A melhor solução depende da sua aplicação mesmo...

Cássio Marques

Blog
du123
JavaChild

Membro desde: 27/11/2006 11:19:22
Mensagens: 127
Offline

Vou dar uma olhada!
Obrigado!

Keep studying, little grasshopper... =)
du123
JavaChild

Membro desde: 27/11/2006 11:19:22
Mensagens: 127
Offline

Preferi criar a interface Promovivel... funcionou legal =)

Outra duvida... se eu quiser utilizar o polimorfismo, junto com isso... e fazer algo parecido com isso:

Funcionario g1;
g1 = new Gerente("Eduardo Amuri","442243133",1000);
g1.promove();

Porque ele não deixa, sendo que g1 é um gerente? ( lembrando que Funcionario é abstrato.

tks!

Keep studying, little grasshopper... =)
cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

posta o código da interface e da(s) classe(s) ai!

Cássio Marques

Blog
du123
JavaChild

Membro desde: 27/11/2006 11:19:22
Mensagens: 127
Offline

A classe abstrata Funcionario...





e a interface...


Muito obrigado =)

Keep studying, little grasshopper... =)
cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

Apesar da sua classe Gerente implementar a interface Promovivel, como ela estende Funcionario, o extends acaba "prevalecendo" sobre o implements. Logo, para que vc pudesse utilizar o método promove() com essa estrutura de classes que você criou, seria necessário que a classe abstrata Funcionario tivesse o método promove(), o que não acontece...

Cássio Marques

Blog
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Aviso:



== testa se as referencias,
equals testa a igualdade de valores, nesse caso sobrecarregado para a classe String com este objetivo.

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
du123
JavaChild

Membro desde: 27/11/2006 11:19:22
Mensagens: 127
Offline

Existe alguma lógica que eu possa usar, que faça mais sentido?

Não contava com essa "prioridade" ... hehehe

Keep studying, little grasshopper... =)
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team