Colegas,
Na classe Class PedidoItem preciso definir um atributo que pode ser: Um Dvd ou um Eletrodomestico ou qualquer outro que herda de Produto com os seus respectivos atributos.
Se eu definir assim (por exemplo):
Produto p = new Dvd();
estarei fazendo um cast de Dvd para Produto, o que não é o que eu quero. Estou correto?
Quero que nesse atributo tenha um Dvd ou um Eletrodomestico.
Como fazer?
Muito obrigado,
Marques
[code]
public Class Produto {
//Atributos do Produto
}
public Class Dvd extends Produto {
//Atributos do Dvd
}
public Class Eletrodomestico extends Produto {
//Atributos do Eletrodomestico
}
public Class PedidoItem {
//Aqui eu quero criar um atributo que pode ser: Um Dvd ou um Eletrodomestico ou qualquer outro que herda de Produto
}[/code]
Você pode criar vários métodos usando polimorfismo, tipo se for adicionar alguns métodos você pode assim:
public void adicionar(DVD dvd){}
public void adicionar(Eletrodomestico eletro){}
Pronto, nesse exemplo eu não estou usando o cast, realmente fica muito feio, pq com o casting você está forçando uma situação. Desse jeito que estou lhe mostrando fica muito melhor.
Mas lembre-se com a herança o dvd é um produto (relação É-UM).
O Eletrodoméstico TAMBÉM É UM Produto (Relação É-UM).
Oi!
É assim mesmo que você faz, defina um novo atributo que é uma referencia para um Produto e sempre que quiser um objeto de determinado tipo você o instancia como tal.
Caso queira usar métodos especificos de uma subclasse de produto você usa um cast explicito e assim poderá usar o método.
Ex:
Produto fogao = new Eletrodomestico();
//Faz várias coisas (...)
((Eletrodomestico)fogao).algumMetodoDaClasseEletroDomestico();
Abracos,