Sobes.tech
Junior

Как наследникът използва функционалността на класа-родител?

sobes.tech AI

Отговор от AI

Наследяване: наследникът получава публичните и защитени членове на класа-родител.

  • Директен достъп: До публичните и защитени полета и методи на родителя може да се достъпва директно по името им вътре в наследяващия клас.
  • Ключова дума super: Използва се за извикване на конструктора на родителя или за достъп до презаписаните методи/поля на родителя, когато в наследяващия клас има членове със същото име.
  • Презаписване (overriding): Методите на родителя (които не са final) могат да бъдат презаписани в наследяващия клас, като се променя тяхното поведение.
// Пример за клас-родител
class Parent {
    protected int parentValue;

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

    public void displayParentValue() {
        System.out.println("Стойност на родителя: " + parentValue);
    }

    public final void cannotBeOverridden() {
        System.out.println("Този метод не може да бъде презаписан.");
    }
}

// Пример за наследяващ клас
class Child extends Parent {
    private int childValue;

    public Child(int parentValue, int childValue) {
        super(parentValue); // Викаме конструктора на родителя
        this.childValue = childValue;
    }

    // Презаписване на метода на родителя
    @Override
    public void displayParentValue() {
        System.out.println("Презаписана стойност на родителя: " + parentValue); // Достъп до защитеното поле на родителя
    }

    public void displayChildValue() {
        System.out.println("Стойност на детето: " + childValue);
    }

    public void callParentMethod() {
        super.displayParentValue(); // Викаме метода на родителя чрез super
    }
}