Dziedziczenie to jeden z podstawowych mechanizmów programowania obiektowego i pozwala współdzielić funkcjonalności pomiędzy klasami. Klasa, która „udziela” swoich składowych lub metod innej klasie nazywa się bazową. Natomiast klasa, która dziedziczy (rozszerza) funkcjonalności klasy bazowej to klasa pochodna lub potomna. Połączenie klas odbywa się za pomocą słowa kluczowego extends.
1 2 3 4 5 |
public class Potomna extends Bazowa { // kod klasy } |
Klasa potomna może dziedziczyć tylko jedną klasę bazową.
Aby zrozumieć pojęcie dziedziczenia posłużymy się trywialnym przykładem:
Rodzice mogą mieć dziecko lub dzieci, a te z kolei dziedziczą po nich nazwisko (a dokładnie po swoim ojcu). Stwórzmy więc klasę bazową Parents (Rodzice) i zadeklarujmy w niej lastname (nazwisko). Standardowo, dodajmy również settery i gettery aby mieć dostęp do zmiennej prywatnej lastname.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Parents { private String lastname; public void setLastname(String lastname) { this.lastname = lastname; } public String getLastname() { return lastname; } } |
Teraz stwórzmy klasę potomną Children (Dzieci), która będzie zawierać składową firstname (imię) oraz dziedziczyć nazwisko z klasy rodziców – extends Parents:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class Children extends Parents { private String firstname; public void setFirstname(String firstname) { this.firstname = firstname; } public String getFirstname() { return firstname; } } |
Na koniec przetestujmy dziedziczenie tworząc klasę FamilyTest:
1 2 3 4 5 6 7 8 9 10 11 12 |
public class FamilyTest { public static void main(String[] args) { Children child = new Children(); // tworzymy nowy obiekt klasy Children child.setFirstname("Jan"); // ustawiamy imię child.setLastname("Kovalski"); // ustawiamy nazwisko z klasy Parents // wyświetlamy imię i nazwisko dziecka :) System.out.println(child.getFirstname() + " " + child.getLastname()); } } |
Dzięki dziedziczeniu zmienna referencyjna child (dziecko) ma dostęp do obu klas (Children oraz Parents).
Jak widać z przykładu, dziedziczenie to prosty mechanizm a jego znajomość pozwala na lepszą organizację kodu. Możemy rozbić program na osobne klasy, które z kolei mogą być wykorzystywane w innych podprogramach itp.
Czytaj dalej: INTERFEJSY →