Sobes.tech
Junior

Come una classe derivata utilizza la funzionalità della classe genitore?

sobes.tech AI

Risposta dell'AI

Per ereditarietà: la classe figlia riceve i membri pubblici e protetti della classe genitore.

  • Accesso diretto: È possibile accedere direttamente ai campi e ai metodi pubblici e protetti del genitore per nome all’interno della classe figlia.
  • Parola chiave super: Viene usata per chiamare il costruttore del genitore o per accedere ai metodi/campi sovrascritti del genitore quando nella classe figlia ci sono membri con lo stesso nome.
  • Sovrascrittura (overriding): I metodi del genitore (che non siano final) possono essere sovrascritti nella classe figlia, modificandone il comportamento.
// Esempio di classe genitore
class Parent {
    protected int parentValue;

    public Parent(int value) {
        this.parentValue = value;
    }

    public void displayParentValue() {
        System.out.println("Valore del genitore: " + parentValue);
    }

    public final void cannotBeOverridden() {
        System.out.println("Questo metodo non può essere sovrascritto.");
    }
}

// Esempio di classe figlia
class Child extends Parent {
    private int childValue;

    public Child(int parentValue, int childValue) {
        super(parentValue); // Chiamata al costruttore del genitore
        this.childValue = childValue;
    }

    // Sovrascrittura del metodo del genitore
    @Override
    public void displayParentValue() {
        System.out.println("Valore sovrascritto del genitore: " + parentValue); // Accesso al campo protetto del genitore
    }

    public void displayChildValue() {
        System.out.println("Valore del figlio: " + childValue);
    }

    public void callParentMethod() {
        super.displayParentValue(); // Chiamata al metodo del genitore tramite super
    }
}