Ważną koncepcją w programowaniu obiektowym jest dziedziczenie. Zapewnia to sposób przedmioty definiować wzajemne relacje. Jak sama nazwa wskazuje, obiekt może dziedziczyć właściwości z innego obiektu.
Mówiąc bardziej konkretnie, obiekt jest w stanie przekazać swój stan i zachowania swoim dzieciom. Aby dziedziczenie działało, obiekty muszą mieć cechy wspólne ze sobą.
W Jawa, klasy mogą być pobierane z innych klas, które mogą być pobierane z innych i tak dalej. Wynika to z faktu, że mogą dziedziczyć funkcje z klasy powyżej, aż do najwyższej klasy Object.
Przykład dziedziczenia Java
Załóżmy, że tworzymy klasę o nazwie Człowiek, która reprezentuje nasze cechy fizyczne. To ogólna klasa, która może reprezentować ciebie, mnie lub kogokolwiek na świecie. Jego stan śledzi takie rzeczy, jak liczba nóg, liczba ramion i grupa krwi. Zachowuje się jak jedzenie, spanie i chodzenie.
Człowiek jest dobry, jeśli chodzi o ogólne zrozumienie tego, co sprawia, że jesteśmy tacy sami, ale na przykład nie może mi powiedzieć o różnicach płciowych. W tym celu musielibyśmy stworzyć dwa nowe typy klas o nazwie Mężczyzna i Kobieta. Stan i zachowania tych dwóch klas będą się od siebie różnić na wiele sposobów, z wyjątkiem tych, które odziedziczą po człowieku.
Dlatego dziedziczenie pozwala nam objąć stan i zachowania klasy nadrzędnej w jej dziecko. Klasa potomna może następnie rozszerzyć stan i zachowania, aby odzwierciedlić różnice, które reprezentuje. Najważniejszym aspektem tej koncepcji do zapamiętania jest to, że klasa potomna jest bardziej wyspecjalizowaną wersją rodzica.
Co to jest nadklasa?
W relacji między dwoma obiektami nadklasa jest nazwą nadawaną dziedziczonej klasie. To brzmi jak klasa super duper, ale pamiętaj, że jest to bardziej ogólna wersja. Lepsze nazwy mogą być klasą podstawową lub po prostu klasą nadrzędną.
Aby tym razem wziąć przykład bardziej realny, moglibyśmy mieć nadklasę o nazwie Osoba. Jego stan zawiera imię i nazwisko osoby, adres, wzrost i wagę oraz zachowuje się, jak chodzenie na zakupy, ścielenie łóżka i oglądanie telewizji.
Możemy stworzyć dwie nowe klasy, które odziedziczą po osobie o nazwie Student i Worker. Są to bardziej wyspecjalizowane wersje, ponieważ chociaż mają nazwy, adresy, oglądają telewizję i chodzą na zakupy, mają również cechy, które różnią się od siebie.
Pracownik może mieć stan posiadający tytuł zawodowy i miejsce zatrudnienia, podczas gdy Student może posiadać dane dotyczące obszaru nauki i instytucji uczenia się.
Przykład nadklasy:
Wyobraź sobie, że definiujesz klasę Person:
osoba publiczna. { }
Nowa klasa może zostać utworzona poprzez rozszerzenie tej klasy:
klasa publiczna Pracownik przedłuża osobę. { }
Mówi się, że klasa Person jest nadklasą klasy Employee.
Co to jest podklasa?
W relacji między dwoma obiektami podklasa to nazwa nadana klasie dziedziczącej z nadklasy. Chociaż brzmi to trochę ponuro, pamiętaj, że jest to bardziej wyspecjalizowana wersja nadklasy.
W poprzednim przykładzie Uczeń i Pracownik są podklasami.
Podklasy mogą być również znane jako klasy pochodne, klasy potomne lub klasy rozszerzone.
Ile mogę mieć podklas?
Możesz mieć tyle podklas, ile chcesz. Nie ma ograniczeń co do liczby podklas, które może posiadać nadklasa. Podobnie, nie ma ograniczenia liczby poziomów dziedziczenia. Hierarchię klas można zbudować na pewnym obszarze wspólności.
W rzeczywistości, jeśli spojrzysz na biblioteki Java API, zobaczysz wiele przykładów dziedziczenia. Każda klasa w interfejsach API jest dziedziczona z klasy o nazwie java.lang. Obiekt. Na przykład za każdym razem, gdy używasz obiektu JFrame, znajdujesz się na końcu długiej linii dziedziczenia:
java.lang. Obiekt. przedłużony przez java.awt. Składnik. przedłużony przez java.awt. Pojemnik. przedłużony przez java.awt. Okno. przedłużony przez java.awt. Rama. przedłużony przez javax.swing. JFrame.
W Javie, gdy podklasa dziedziczy po nadklasie, nazywa się to „rozszerzaniem” tej nadklasy.
Czy moja podklasa może dziedziczyć po wielu superklasach?
Nie. W Javie podklasa może rozszerzać tylko jedną nadklasę.
Dlaczego warto korzystać z dziedziczenia?
Dziedziczenie umożliwia programistom ponowne wykorzystanie kodu, który już napisali. W przykładzie klasy ludzkiej nie musimy tworzyć nowych pól w klasie mężczyzny i kobiety, aby utrzymać grupę krwi, ponieważ możemy użyć pola odziedziczonego po klasie ludzi.
Kolejną zaletą korzystania z dziedziczenia jest to, że pozwala nam traktować podklasę tak, jakby była nadklasą. Załóżmy na przykład, że program utworzył wiele instancji obiektów mężczyzny i kobiety. Program może wymagać wywołania zachowania uśpienia dla wszystkich tych obiektów. Ponieważ zachowanie podczas snu jest zachowaniem ludzkiej nadklasy, możemy zgrupować wszystkie obiekty mężczyzny i kobiety i traktować je tak, jakby były obiektami ludzkimi.