Przysłanianie metod klas bazowych. Hierarchia klas.

0

Cześć.

Załóżmy, że mamy taki układ:

Klasa A 
{ 
void fun{};
 }

Klasa B extended A
{ 
void fun {}; 
}

Klasa C extended B
{
 void fun {};
}

Przy pomocy konstrukcji super możemy wywołać w klasie pochodnej metodę z klasy bazowej np. kiedy mają takie same nazwy. Co jednak jeśli chciałbym dostać się na samą górę hierarchii dziedziczenia? Rozumiem, że przykład trochę bez sensu ale czy jest jakiś sposób, by z wnętrza klasy C dostać się do funkcji fun() w klasie A: super.super.fun ? :)? Czy konieczne jest odwołanie przez klasę B ?

0

Nie możesz, bo naruszyło by to zasady enkapsulacji. Jeśli chcesz pominąć klasę B to nie dziedzicz z B tylko z A.
Obejściem jest np udostępnienie w B metody wywołującej super.fun
W praktyce raczej niespotykana jest taka potrzeba (o ile program jest dobrze napisany)

1 użytkowników online, w tym zalogowanych: 0, gości: 1