KuroKami69 ha scritto:
Si, ho parecchia confusione!
cioè te mi staresti dicendo che nel costruttore di veicolo io devo lasciare vuoti i valori di marca e modello, e poi nelle sottoclassi richiamarli con un get e impostarli?
No. Questo di seguito è l'esempio su cui dovresti ragionare:
public class Veicolo {
private String marca;
private String modello;
public Veicolo(String marca, String modello) {
this.marca = marca;
this.modello = modello;
}
// metodi getMarca/setMarca ; getModello/setModello
// altro eventuale (es. equals, hashCode, toString)
}
public class Automobile extends Veicolo {
private double capacitaBagagliaio;
public Automobile(String marca, String modello, double capacitaBagagliaio) {
super(marca, modello);
this.capacitaBagagliaio = capacitaBagagliaio;
}
// metodi getCapacitaBagagliaio/setCapacitaBagagliaio
// altro eventuale (es. equals, hashCode, toString)
}
Vedi come il costruttore di Automobile riceve tutti i dati, di cui alcuni li passa al super-costruttore (è così che lo "stato" in Veicolo viene inizializzato) e l'altro lo tiene per inizializzare il proprio campo?
Nota che questi due costruttori di per sé NON sono obbligatori. Se non ci fossero, vorrebbe semplicemente dire che lo stato dell'oggetto DEVE essere impostato valore per valore tramite i metodi
setter.
Il costruttore permette di inizializzare fin da subito lo stato dell'oggetto. Questo permetterebbe ad esempio di NON mettere i setter (se si vuole una classe di oggetti "immutabili").