Estava estudando OO, e o autor do livro que lia citou como exemplo de Polimorfismo uma sub-classe Conta Especial com um método Saque, redefinido para esta classe, uma vez que quem tem uma conta especial tem um limite, e pode sacar mesmo quando não tem saldo (vai nessa…).
Gostaria de pedir a cada um que me desse outros exemplos práticos de Polimorfismo, para enriquecer meus estudos.
Classe pai: Motor
Classes-filha: MotorGasolina, MotorEletrico
A classe Motor define o método ligar(). Porém a implementação de ligar() em cada um dos motores (gasolina e elétrico) é diferente.
S
SB_SC
Boa noite danieldestro…
Eu li o seu exemplo de polimorfismo e estou fazendo um trabalho de conclusão de curso desenvolvendo em linguagem Java…
o meu trabalho consiste em comunicar um motor elétrico com a linguagem Java…
Por exemplo: eu tenho um motor ligado a uma placa que está ligada a um computador. Este computador possui um software que tem um botão liga e um botão desliga. como faço para programar estes botões através do Java para ligar/desligar este motor?
Agradeço a sua atenção.
Abraço
Andre_Brito
Acho que aquilo só foi um exemplo de Polimorfismo, não algo prático mesmo.
Você pode buscar por alguma engine que já exista pra esse “tipo” de motor (tipo um framework ou algo do tipo) ou pesquisar sobre JNI e fazer a comunicação pelas portas paralelas.
S
SB_SC
Bom dia Andre…
Eu agradeço a sua dica vou tentar pesquisar algo do gênero…
Eu preciso de algumas referencias para poder começar meu trabalho e agradeço muito a sua ajuda!
Abraço
então, mas está dando erro não faço ideia o porque
Rodrigo_Sasaki
E o que seria qua? poste o código completo.Aluguel aluTemp = new Aluguel();
Quarto quarto = (Quarto) aluTemp;Se Quarto extends Aluguel, isso deve funcionar.
L
Leigan
verdade não especifiquei
aluguel aluTemp = new aluguel();
quarto qua = new quarto();
qua = (quarto) aluTemp;
ele compila, mas da erro de cast na linha 3
Rodrigo_Sasaki
Ah sim, todo Quarto é um Aluguel, mas nem todo Aluguel é um Quarto. Um cast desse não irá funcionar, apesar de compilar. se fosse:Aluguel aluTemp = new Quarto();
Quarto qua = new Quarto();
qua = (Quarto) aluTemp; aí sim funcionaria
cara, você não pode fazer um cast de um objeto Aluguel para Quarto, sendo que ele não é um Quarto.
D
Daniel_MV
Na apostila fj11 da caelum tem um exemplo bem didático de uma classe abstrata Funcionário e as classes filhas, gerente, diretor, estagiário, etc…
Rocklee6544
Boa tarde pessoal
estou tendo um problema com cast:
aluguel aluTemp = new aluguel();
qua = (quarto) aluTemp;
Obs: classe quarto extends aluguel
Alguem sabe?
Bom pra começar não faz sentido esse extends, já que o quarto não é um aluguel. (ele pode ter um aluguel, nesse caso do ter um
se usa composition).
Outro erro é ter a primeira letra da Classe em minúsculo.
O erro é que vc esta invertendo o extends, no seu caso só funcionária se quarto fosse classe mãe de aluguel.
(O que esta do lado direito de extends é superclasse (classe mãe) e que esta ao lado esquerdo subclasse/classe filha
Na verdade o que vc gostaria de fazer é:
packagebr.com.caelum.agenda.teste;publicclassTestaConversao{publicstaticvoidmain(String[]args){Animalanimal=newCachorro();//afinal cachorro é um animal/*E nesse ponto vc diz ao compilador que sabe o que esta fazendo por isso é que o erro ocorre em tempo de execução apenas*/Cachorroc=(Cachorro)animal;}}