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.
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.
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.
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
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.
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
[code] private static aluguel recebeDados(){
aluguel alu = new aluguel();
alu.setNumeroQuarto(Integer.parseInt(JOptionPane.showInputDialog(null, “Número do quarto :\n1-25: Quartos com banheira\n26-50: Quartos sem banheira\n 51-60: Chalés”)));
if(alu.getNumeroQuarto() >= 1 && alu.getNumeroQuarto() <= 60){
alu.setLocatario(JOptionPane.showInputDialog(null, "Nome do locatario: "));
alu.setDiaEntrada(Integer.parseInt(JOptionPane.showInputDialog(null, "Dia de entrada: ")));
alu.setMesEntrada(Integer.parseInt(JOptionPane.showInputDialog(null, "Mes de entrada: ")));
alu.setAnoEntrada(Integer.parseInt(JOptionPane.showInputDialog(null, "Ano de entrada: ")));
alu.setHorarioEntrada(JOptionPane.showInputDialog(null, "Horario de entrada: "));
}else{
JOptionPane.showMessageDialog(null, “Digite um valor correto”);
}
return alu;
}
aluguel aluTemp = new aluguel();
aluTemp = recebeDados();
qua = (quarto) aluTemp;[/code]
aluguel aluTemp = new aluguel();
qua = (quarto) aluTemp;
Obs: classe quarto extends aluguel
Alguem sabe? [/quote]
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 é:
[code]
package br.com.caelum.agenda.teste;
public class TestaConversao {
public static void main(String[] args) {
Animal animal=new Cachorro(); //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/
Cachorro c=(Cachorro)animal;