Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
Dziedziczenie - klasy potomne - Dziedziczenie na prostym przykładzie PDF Drukuj Email
Ocena użytkowników: / 5
SłabyŚwietny 
Instrukcje dodatkowe - Programowanie w języku JAVA
Wpisany przez Administrator   
Spis treści
Dziedziczenie - klasy potomne
Zadanie dla przypomnienia i utrwalenia
Co to są klasy potomne?
Dziedziczenie na prostym przykładzie
Czy dziedziczenie działa jak należy?
Ćwiczenia utrwalające
Rozwiązania zadań
Wszystkie strony

 

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:

  • klasa punkt2d o polach wspX oraz wspY
  • klasa punkt3d o polach wspX, wspY oraz wspZ

 

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:

  • klasa punkt2d o polach wspX oraz wspY
  • klasa punkt3d o polach wspX, wspY oraz wspZ, przy czym klasa punkt3d dziedziczy z klasy punkt2d

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:

  • czytelności kodu
  • miejscu
  • czasie potrzebnym do przepisywania/kopiowania jeszcze raz tego samego kodu w nowej klasie
  • potencjalnym spokoju, gdyż zmniejsza się ryzyko popełnienia literówek, błędów, "czeskich" błędów przy kopiowaniu kodu itd.

Zysk jest tym większy, im bardziej skomplikowane są klasy na których opiera się program.