Eredità Java
Ereditarietà Java (sottoclasse e superclasse)
In Java è possibile ereditare attributi e metodi da una classe all'altra. Raggruppiamo il "concetto di eredità" in due categorie:
- sottoclasse (figlio) - la classe che eredita da un'altra classe
- superclass (genitore) - la classe da cui viene ereditata
Per ereditare da una classe, utilizzare la extends
parola chiave.
Nell'esempio seguente, la Car
classe (sottoclasse) eredita gli attributi e i metodi dalla Vehicle
classe (superclasse):
Esempio
class Vehicle {
protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
System.out.println("Tuut, tuut!");
}
}
class Car extends Vehicle {
private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {
// Create a myCar object
Car myCar = new Car();
// Call the honk() method (from the Vehicle class) on the myCar object
myCar.honk();
// Display the value of the brand attribute (from the Vehicle class) and the value of the modelName from the Car class
System.out.println(myCar.brand + " " + myCar.modelName);
}
}
Hai notato il protected
modificatore in Veicolo?
Impostiamo l' attributo del marchio in Veicolo su un protected
modificatore di accesso . Se fosse impostato su private
, la classe Car non sarebbe in grado di accedervi.
Perché e quando usare "Ereditarietà"?
- È utile per il riutilizzo del codice: riutilizza attributi e metodi di una classe esistente quando crei una nuova classe.
Suggerimento: dai un'occhiata anche al capitolo successivo, Polimorfismo , che utilizza metodi ereditati per eseguire diversi compiti.
La parola chiave finale
Se non vuoi che altre classi ereditino da una classe, usa la final
parola chiave:
Se provi ad accedere a una final
classe, Java genererà un errore:
final class Vehicle {
...
}
class Car extends Vehicle {
...
}
L'output sarà qualcosa del genere:
Main.java:9: error: cannot inherit from final Vehicle
class Main extends
Vehicle {
^
1 error)