Dziedziczenie

0

Dobra, mamy sobie takie dziedziczenie:

moja SomeClass2 dziedziczy po abstrakcie i musi miec funkcje someClass()

public class SomeClass2 extends SomeAbstractClass {
  @Override
  public String someClass() { return null; }
}

ale ja ta funkcje musze wywolac dopiero w SomeClass3 poniewaz w niej mam kilka innych funkcji potrzebnej tej jednej:

public class SomeClass3 extends SomeClass2 {
   public String someClass() { 
        //some logic
  }
}

i teraz pytanie, czy mogę w SomeClass2 zwrocic nulla a logike do tego w SomeClass3?

1

Nie. Masz dostęp do max jednego rodzica za pomocą super. Nie istnieje coś takiego jak super2 czy moresuper
BTW myślę że problem jest w zbyt złożonej hierarchii dziedziczenia

0

Wygląda to na bardzo zły design - na pewno dziedziczenie to nie jest najlepsze rozwiązanie tutaj.
Co chcesz osiągnąć?

3

i teraz pytanie, czy mogę w SomeClass2 zwrocic nulla a logike do tego w SomeClass3?

Dalej to wygląda na zły design, ale jeśli pytasz tylko o pozwolenie to jeśli kompilator Ci to skompiluje to możesz :p

2

zly design, skoro SomeClass2 nie jest w stanie zaimplementowac i poprawnie obsluzyc metody abstrakcyjnej z SomeAbstractClass, to nie powinna go rozszeżać. jak dalej chcesz isc w ten przypadek to powinienes to rozdzielić na dwie abstrakcyjne klasy/interfejsy

1

W kilku wątkach udzielałem podobnej odpowiedzi: *prawdopodobnie wyniosłeś z kursów/edukacji przesadne przywiązanie do dziedziczenia.
Nie jest ono istotą, ani najważniejszą kwestią w OOP - choć z wielu początkujących kursów (albo słabych autorów) można wynieść takie wnioski
*

Rozbicie na interfejsy (więcej niż jeden), kompozycja (niedowartościowana w w/w kursach), to pierwsze rozwiązania, które można by wskazać. Nie dajesz wyrazistych, konkretnych nazw klas, to nie rozstrzygnę

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