Sobes.tech
Junior

Jak klasa dziedzicząca korzysta z funkcjonalności klasy nadrzędnej?

sobes.tech AI

Odpowiedź od AI

Przez dziedziczenie: klasa potomna otrzymuje publiczne i chronione członki klasy nadrzędnej.

  • Bezpośredni dostęp: Do publicznych i chronionych pól i metod klasy nadrzędnej można odwoływać się bezpośrednio po ich nazwie wewnątrz klasy potomnej.
  • Słowo kluczowe super: Używane do wywołania konstruktora klasy nadrzędnej lub do odwołania się do nadpisanych metod/pól klasy nadrzędnej, gdy w klasie potomnej istnieją członki o tej samej nazwie.
  • Nadpisywanie (overriding): Metody klasy nadrzędnej (nie final) można nadpisać w klasie potomnej, zmieniając ich zachowanie.
// Przykład klasy nadrzędnej
class Parent {
    protected int parentValue;

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

    public void displayParentValue() {
        System.out.println("Wartość rodzica: " + parentValue);
    }

    public final void cannotBeOverridden() {
        System.out.println("Ta metoda nie może być nadpisana.");
    }
}

// Przykład klasy potomnej
class Child extends Parent {
    private int childValue;

    public Child(int parentValue, int childValue) {
        super(parentValue); // Wywołanie konstruktora klasy nadrzędnej
        this.childValue = childValue;
    }

    // Nadpisanie metody klasy nadrzędnej
    @Override
    public void displayParentValue() {
        System.out.println("Nadpisana wartość rodzica: " + parentValue); // Dostęp do chronionego pola rodzica
    }

    public void displayChildValue() {
        System.out.println("Wartość dziecka: " + childValue);
    }

    public void callParentMethod() {
        super.displayParentValue(); // Wywołanie metody klasy nadrzędnej przez super
    }
}