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
}
}