wywołanie metod dziedziczonych

0

Witam,

mam taką strukturę:

class A {
getName()
{
formatID();
}
}
class B exends A
{
getName(){
// cos tam
super.getName();
}
formatID()
{
system.out.print("B");
}
}
class C exends B
{
formatID()
{
system.out.print("C");
}
getName(){
formatID();
super.getName();
}
}

C c = new C();
c.getName();

//output: CC

Czy jest możliwe takie wywołanie metod aby
w wyniku otrzymać: CB nie zmieniając.

C c = new C();
c.getName();

Znaczy w przpadku:
C c = new C();
c.getName();
// miało by być CB

B b = new B();
b.getName();

// miało by być B

0

Nie da się. To jest niezgodne z programowaniem obiektowym.

Jeśli chcesz uzyskać wspomniane zachowanie to zastosuj delegację zamiast dziedziczenia, tzn obiekt typu C powinien zawierać referencję do obiektu typu B.

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