Dziedziczenie - klasy potomne - Dziedziczenie na prostym przykładzie |
Instrukcje dodatkowe - Programowanie w języku JAVA |
Wpisany przez Administrator |
Strona 4 z 7
Aby to sprawdzić w praktyce posłużymy się prostym przykładem: Zadanie 2: Napisz program, w którym zdefiniujesz klasę o nazwie punkt2d o polach: wspX oraz wspY: Teraz załóżmy, że chcemy stworzyć nową klasę o nazwie punkt3d, która będzie różniła się od klasy punkt2d tym, że będzie posiadała dodatkowe pole: wspZ. Zadanie 3: Napisz program, w którym występują dwie klasy:
Najprostszym (na pierwszy rzut oka) rozwiązaniem byłoby stworzenie całkiem nowej klasy i zdefiniowanie jej od początku: Rozwiązanie polegało właściwie na przepisaniu większości kodu klasy punkt2d i dodaniu jednej linijki (11). O ile nie jest to aż tak uciążliwe w przypadku tak nieskomplikowanej klasy, o tyle przepisywanie całej definicji klasy wraz z metodami oraz konstruktorami klasy złożonej w wielu pól byłoby trudniejsze. (wyobraź sobie ile przepisywania byłoby potrzebne, aby analogiczną sytuacje (punkt2d => punkt3d zastosować do zadania 1). Spróbuję teraz przedstawić inne, sprytniejsze rozwiązanie: Zadanie 4: Napisz program, w którym występują dwie klasy:
W linijce 8 wpisaliśmy początek definicji klasy punkt3d. Zapis extends punkt2d oznacza, że klasa ta tworzona jest na wzór klasy punkt2d, czyli dziedziczy z tej klasy. Innymi słowy, klasa punkt3d przejmuje (kopiuje) wszystkie właściwości (pola, metody, konstruktory itd.) z klasy punkt2d. W linijce 9 dopisaliśmy jeszcze jedno pole: wspZ dlatego, że nie ma go w definicji klasy punkt2d.
Przypomnijmy kod dziedziczenia: class nazwa_klasy extends klasa_macierzysta{ //dodatkowy kod klasy potomnej }
Jak widać już w najprostszym przykładzie (klasa z 2 polami i niczym więcej) zyskujemy na:
Zysk jest tym większy, im bardziej skomplikowane są klasy na których opiera się program.
|