Dziedziczenie dla wybranych.

0

Witam, na początek napiszę pseudokod jak to wszystko u mnie wygląda. Otóż mam 3 klasy:

class Klasa1
{

public void metoda1(){};

public void metoda2(){};

public void metoda3(){};

}

class Klasa2 extends Klasa1
{
public void metoda2(){//Rob coś innego};
}

class Klasa3 extends Klasa1
{
public void metoda2(){//Rób jeszcze coś innego};
//Nie korzystaj z metoda3().
}

Dokładniej chciałbym zrobić tak, aby Klasa1 miała swoje 3 metody. Klasa2 mogła korzystać z metoda1 oraz metoda3, ale metoda2 miała własną. Zaś żeby Klasa3 mogła korzystać z metoda1, metoda2 miała własną, ale nie mogła korzystać z metoda3. I tutaj pojawia się moje pytanie, czy da się tak zrobić, aby druga klasa mogła korzystać z danej metody, a kolejna (trzecia) już nie?

0

czy da się tak zrobić, aby druga klasa mogła korzystać z danej metody, a kolejna (trzecia) już nie?

Nie rób tego, LSP

Jak podasz co to ma robić, to być może ktoś wymyśli fajne rozwiązanie dla akurat tego problemu. Na razie mogę powiedzieć jedynie, żebyś z Klasa1 zrobił 2 interfejsy (nawet z domyślnymi implementacjami metod) i tam gdzie potrzebujesz używał albo obu, albo jednego z nich.

1

To bez sensu. Jeśli tylko jedna klasa ma mieć daną metodę, to NIECH TYLKO JEDNA KLASA MA DANĄ METODĘ.

0

Możesz nadpisać trzecią metodę w klasie w której ma być nieużywana by rzucała UnsupportedOperationException, ale twój pomysł generalnie łamie zasady dziedziczenia - byt dziedziczący może dokładać funkcjonalności, ale nie może mieć ich mniej niż bazowy.

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