Quote Originariamente inviata da roxi.g Visualizza il messaggio
Ciao scusa non avevo specificato ma vagone passeggeri e merci sono sottoclassi di vagone
Posso dire se serve che dopo aver fatto la classe vagone per fare la classe vagone passeggeri e vagone merci ha utilizzato "extend" spero possa essere utile come jnformazione
Chiarissimo, allora così HA senso. La classe "base" è quindi Vagone.

La classe Treno quindi potrà avere, detto in generale, un elenco di oggetti visti come tipo Vagone. Potrebbe essere un array o meglio ancora una collezione (una lista ha senso).

Qualcosa tipo:

codice:
public class Treno {
    private List<Vagone> vagoni;

    // ......altro
}

All'interno della classe ci potranno essere metodi es. public void aggiungiVagone(Vagone v)

Notare che la lista è parametrizzata Vagone e anche il parametro di aggiungiVagone l'ho messo Vagone. Per effetto della ereditarietà/polimorfismo, posso passare ad aggiungiVagone qualunque oggetto che è-un Vagone, ad esempio un VagonePasseggeri. La gerarchia di classi con Vagone alla "base" serve proprio per essere sfruttata in questo modo!

Treno deve "sapere" delle sottoclassi di Vagone? Di base, di per sé NO, potrebbe anche essere codificata solo in funzione del tipo Vagone (un getVagone(int indice) restituisce un Vagone, ecc...).
Se ci sono necessità particolari e diverse, allora VANNO ben specificate, motivate e chiarite.