Super Classe Artgo:
import javax.swing.JOptionPane;
public class Artigo {
protected String descricao;
protected int codigo_identificador;
protected String marca;
protected int quantidade_stock;
protected double preco;
//constructor
public Artigo(){
descricao=JOptionPane.showInputDialog("introduza descricao");
codigo_identificador=Integer.parseInt(JOptionPane.showInputDialog("introduza codigo identificador"));
marca=JOptionPane.showInputDialog("introduza marca");
quantidade_stock=Integer.parseInt(JOptionPane.showInputDialog("introduza quantidade stock"));
preco=Integer.parseInt(JOptionPane.showInputDialog("introduza preco"));
}
}
Sub Classe Lentes:
import javax.swing.JOptionPane;
public class Lentes extends Artigo{
protected int distancia_focal;
protected String zom;
//constructor
public Lentes(){
super();
distancia_focal=Integer.parseInt(JOptionPane.showInputDialog("introduza distancia (ex: 200mm)"));
zom=JOptionPane.showInputDialog("introduza zom (ex: v/f)");
}
public void getInformacao(){
System.out.println("descricao: "+descricao);
System.out.println("codigo: "+codigo_identificador);
System.out.println("marca: "+marca);
System.out.println("quantidade: "+quantidade_stock);
System.out.println("preco: "+preco);
System.out.println("distancia: "+distancia_focal);
System.out.println("zom: "+zom);
}
}
Sub Classe Filmes:
import javax.swing.JOptionPane;
public class Filmes extends Artigo{
protected int sensibilidade;
protected int n_fotos;
//constructor
public Filmes(){
super();
sensibilidade=Integer.parseInt(JOptionPane.showInputDialog("introduza sensibilidade (ex: ISO 32"));
n_fotos=Integer.parseInt(JOptionPane.showInputDialog("introduza numero de fotos (ex: 100"));
}
public void getInformacao(){
System.out.println("descricao: "+descricao);
System.out.println("codigo: "+codigo_identificador);
System.out.println("marca: "+marca);
System.out.println("quantidade: "+quantidade_stock);
System.out.println("preco: "+preco);
System.out.println("sensibilidade: "+sensibilidade);
System.out.println("fotos: "+n_fotos);
}
}
Sub Classe Camaras:
import javax.swing.JOptionPane;
public class Camaras extends Artigo{
protected String lente;
protected String cor;
//constructor
public Camaras(){
super();
lente=JOptionPane.showInputDialog("introduza lente (ex: s/n)");
cor=JOptionPane.showInputDialog("introduza cor (ex: preto)");
}
public void getInformacao(){
System.out.println("descricao: "+descricao);
System.out.println("codigo: "+codigo_identificador);
System.out.println("marca: "+marca);
System.out.println("quantidade: "+quantidade_stock);
System.out.println("preco: "+preco);
System.out.println("lente: "+lente);
System.out.println("cor: "+cor);
}
}
Programa principal:
[code]import java.util.Vector;
import javax.swing.*;
public class Loja{
public static void main(String[] args){
Vector artigos = new Vector();
artigos.add(new Lentes());
artigos.add(new Filmes());
artigos.add(new Camaras());
artigos.elementAt(0).getInformacao(); //ERRO!!
artigos.elementAt(1).getInformacao(); //ERRO!!
artigos.elementAt(2).getInformacao(); //ERRO!!
}
}[/code]
A minha dúvida é como chamar o método getInformacao().
Tenho de fazer obrigatoriamente o cast ou não?
Se eu fizer…
((Lentes) artigos.elementAt(0)).getInformacao();
((Filmes) artigos.elementAt(1)).getInformacao();
((Camaras) artigos.elementAt(2)).getInformacao();
…assim funciona, mas eu queria fazer sem o cast.
Obrigado