Dziedziczenie

Escanor16
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 367
0

Dobra, mamy sobie takie dziedziczenie:

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

Kopiuj
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:

Kopiuj
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?

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
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

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
0

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

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
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

ME
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
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

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
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ę

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.