Wpis z mikrobloga

@rubesom: Referencje czyli powiązanie? To obrazek który dodałem powyżej powinien działać, a tak nie jest, nie za bardzo wiem po co jest taki zapis skoro nie mogę znaleźć żadnego praktycznego zastosowania.
  • Odpowiedz
@MtEverest: To wiem, Ze jak napisze "Tiger tiger = new Tiger();" to zadziała to co jest w klasie Tiger oraz w klasie Cat. Ale nie mogę ogarnąć konkretnie tego zapisu: "Cat tiger = new Tiger();". Co on takiego wnosi? działa tak samo jak "Cat cat = new Cat();"
  • Odpowiedz
@dupogisaga: Z tego co pamiętam z języków obiektowych to mając w Twoim przypadku obiekt typu Cat, to masz dostęp do jego metod i metod po których dziedziczy. Jak zrobisz nowy obiekt typu "Tiger" to w swoim przypadku będziesz mieć dostęp do obu metod.
  • Odpowiedz
Metoda "dwa" jest nie widoczna dla obiektu typu "Cat" po mimo tego, że wskazuje ona na obiekt "Tiger" - istotny jest tutaj typ. Nie mam teraz książki przy sobie ale z tego co pamiętam to dokładnie jest to wyjaśnione w książce "Java. Rusz Głową".
  • Odpowiedz
@dupogisaga: Taki zapis jaki podałeś to słaby przykład do nauki dziedziczenia czy polimorfizmu. Załóżmy, że masz klasę Zwierze w której masz metody Jedz, Spij i Pij. Kolejne klasy: Pies, Kot i Wilk dziedziczą po klasie Zwierze (tym samym mówi się, że ją rozszerzają). Dzięki temu możesz zrobić tablicę polimorficzną typów Zwierze i przypisać do niej nowe obiekty różnych zwierząt:
Zwierze[] zwierzeta = new Zwierze[5];
zwierzeta[0] = new Pies();
zwierzeta[1] = new Kot();
zwierzeta[2] = new Wilk();
zwierzeta[3] =
  • Odpowiedz
po co jest taki zapis skoro nie mogę znaleźć żadnego praktycznego zastosowania

Co on takiego wnosi?


@dupogisaga: Wyobraź sobie, że masz aplikację, która rysuje różne kształty na ekranie.
Masz klasę bazową Shape która ma metodę Draw.
Masz klasy dziedziczące po Shape o nazwach Circle, Line, Square i każda z nich przeładowuje metodę Draw, ale ma też swoje pomocnicze funkcje (nie ważne jaka jest ich nazwa
  • Odpowiedz