Cześć Jakoś wcześniej na to nie zwracałem uwagi. Jak widziałem argument funkcji czy w konstruktorze jakąś klasę to ładowałem po prostu tą instancje tej klasy co chcą. Ewentualnie było to tak że parametrem funkcji był jakiś interfejs i nie dało się stworzyć instancji więc robiłem klasę dziedziczącą interfejs. Ale mogła to też być klasa zamiast interfejsu. Doszedłem do wniosku że tak naprawdę nigdy nie wiadomo jaki ma się stworzyć instancje. Bo może trzeba stworzyć instancje jakiejś lepszej klasy która dziedziczy klasę w argumencie jakejś funkcji. Tu zarysowałem problem. Ktoś może pomyśleć że trzeba stwożyć instancję klasa ale tak nie jest bo twórca biblioteki tak zrobił że tak nie jest. Ja stworzyłem jeszcze jedną klasę klasa2 lepsza od klasy. Osoba która widzi tylko zamieniam_zmienne funkcjię pomyśli że trzeba stworzyć klasa() ale to błąd bo trzeba klasa2(). Zilustrowałem problem. Akurat nie używam javy ale język w tych aspektach jest do niej zbliżony. Twórcy frameworków mogli by robić tak jak ja to pokazałem bo dlaczego nie jak coś jest możliwe to prędzej czy później ktoś tak zrobi .
Tu wszystko jest publiczne zaznaczam.
String zamieniam_zmienne(klasa obiekt) {
obiekt.funkcja();
return obiekt.zmienna.toString();
}
class klasa {
int zmienna = 1;
klasa(int zm) {
zmienna = zm << 2;
}
void funkcja() {
print("nic nie robię");
}
}
class klasa2 extends klasa {
klasa2(int zmienna) : super(zmienna);
void funkcja()//następuje nadpisanie funkcji
{
print("robię coś ważnego ważniejszego niż klasa sama nie zapomnij o mnie");
}
}
void main()
{
zamieniam_zmienne(klasa2(4));
zamieniam_zmienne(klasa(4));
}