Belea galera?? To com a seguinte dúvida: Criei a classe Veiculos, e as subclasses Carros, Motos e Caminhoes. Tenho que guardar cada 1 dos subVeículos em uma List diferente, correto??? Para identificar se é um Carro, Moto ou Caminhao, foi incluída a variável int TIPO. Aih que vem a dúvida, devo controlar a List dentro da classe Principal ou dentro da classe Veículo?? Creio que seja na classe Principal, mas daí, toda vez que incluir um novo veículo terei que realizar a consistência do TIPO???
Agradeço desde já!!!
Vc pode gravar cada Veiculo em uma list diferente(ainda mais com Generics que vc pode parametrizar seus tipos<?>)
Sim, na classe Principal, ao mesos que vc queira que os Demais Veículos saibam demais um sobre os outros.Não entendi o que vc chama de "consistência de Tipo".É só verificar, e se der muito no saco, use Enum e seja feliz! 
- Você não precisa da variável tipo. Você pode testar o tipo de qualquer classe com o operador instanceof:
Carro c = new Carro();
Onibus b = new Onibus();
if (c instanceof Carro) { //Retorna true
//Faz alguma coisa
}
if (b instanceof Veiculo) { //Também retorna true, todo ônibus é um veículo
}
if (c instanceof Onibus) { //Retorna false, carro não é ônibus
}[/code]
Você também pode criar um list que só aceite carros:
[code]List<Carro> carros = new ArrayList<Carro>();
carros.add(c); //Ok
carros.add(b); //Class cast exception! Ônibus não é carro![/code]
Ou mesmo, uma lista de veículos:
[code]List<Veiculo> veiculos = new ArrayList<Veiculos>();
veiculos.add(c); //Ok
veiculos.add(b); //OK! Ônibus também é veículo!
Mesmo na lista de veículos, o instanceof ainda funciona. Ele testa a instância real.
if (veiculos.get(0) instanceof Carro) //Também retorna true, o primeiro veículo é um carro.
{
}
Tomara que isso já te dê idéias e te ajude.
Então, até entendi o que vocês disseram, mas para isso meu método “Adiciona” deverá estar descrito na classe Principal, não é?? Isso não vai contra as regras de encapsulamento??? É nisso que estou me confundindo…
… tinha falado besteira :oops: