@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.
@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();"
@Ewentualnie: Dzięki wielkie, już czaje. Po prostu normalnie bierze te z klasy Cat ale jeśli jakaś jest override w klasie Tiger to bierze tą z klasy tiger
@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.
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ą".
@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
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
Jaka jest różnica pomiędzy zapisem Cat cat = new Cat(); a Cat tiger = new Tiger();?
źródło: comment_8cS7Qz6BjzOMvzCDjgI5puNQCe48IK1m.jpg
PobierzCat cat = new Cat(); tworzy obiekt kota.
Cat tiger = new Tiger(); tworzy obiekt tygrysa(który przy okazji jest też kotem)
( ͡° ͜ʖ ͡°)
źródło: comment_Gw6LXcWF7BT5Y8ijeuo9INZgYwFa0YUF.jpg
PobierzKomentarz usunięty przez autora
Tutaj przykład https://dzone.com/articles/programming-to-an-interface
Komentarz usunięty przez moderatora
Zwierze[] zwierzeta = new Zwierze[5];
zwierzeta[0] = new Pies();
zwierzeta[1] = new Kot();
zwierzeta[2] = new
@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