Badanie dziedziczenia w języku programowania Java

Badanie dziedziczenia w języku programowania Java

Dziedziczenie jest jedną z podstawowych koncepcji programowania obiektowego. W programowaniu słowo dziedziczenie reprezentuje relację, w której klasa potomna przyjmuje stan i zachowanie klasy nadrzędnej.





Celem dziedziczenia w tworzeniu oprogramowania jest ułatwienie ponownego użycia bezpiecznego i niezawodnego oprogramowania. Jedną z głównych zalet korzystania z dziedziczenia jest to, że eliminuje ono zbędny kod w programach.





aplikacja do wyszukiwania ubrań ze zdjęcia

Jak działa dziedziczenie

Ideą dziedziczenia jest to, że wiele klas lub obiektów ma ten sam zestaw atrybutów i metod. Dlatego, w duchu tworzenia niezawodnego oprogramowania, nowe klasy mogą teraz czerpać z wcześniej istniejących klas pokrewnych i w razie potrzeby rozszerzać istniejące stany i zachowania.





Prawdziwym przykładem tego, jak działa dziedziczenie, byłoby rozważenie owoców. Jest to szeroka etykieta, która służy do opisania szeregu różnych przedmiotów.

Jabłko to owoc, podobnie jak pomarańcza. Jednak pomarańcza nie jest jabłkiem, więc nie miałbyś owoców jako jednego z twoich zapasów, gdybyś miał sklep. Być może mógłbyś mieć sekcję owoców w swoim ekwipunku, a pod tą sekcją miałbyś bardziej konkretne przedmioty, takie jak jabłka i pomarańcze.



Tak działa dziedziczenie.

Korzystanie z dziedziczenia w Javie

Dziedziczenia można używać w dowolnym języku programowania, który wykorzystuje paradygmat programowania obiektowego . Jednak dokładny sposób wykorzystania dziedziczenia zależy od konkretnego języka programowania.





Na przykład, C++ to także język programowania obiektowego . C++ obsługuje tak zwane dziedziczenie wielokrotne, podczas gdy Java obsługuje tylko dziedziczenie pojedyncze.

Oznacza to, że w Javie klasa nadrzędna może mieć wiele klas potomnych, ale każda klasa potomna może mieć tylko jedną klasę nadrzędną (pojedyncze dziedziczenie). Istnieje jednak sposób na osiągnięcie pośredniego dziedziczenia wielokrotnego w Javie, tworząc relację dziadka, rodzica i dziecka.





Tworzenie klasy nadrzędnej w Javie

Proces wyboru klasy nadrzędnej z dokumentu wymagań oprogramowania jest znany jako analiza obiektowa. Podczas tego procesu często używa się wyrażenia a do identyfikacji możliwych relacji dziedziczenia. Rysując z naszego przykładu powyżej, powinieneś być w stanie zobaczyć, że owoc będzie naszą klasą nadrzędną.

Przykład klasy nadrzędnej owoców


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

Jednym z najbardziej godnych uwagi aspektów powyższej klasy nadrzędnej jest modyfikator dostępu, który jest używany z każdą deklaracją zmiennej. Modyfikator dostępu chronionego jest idealny do użycia w klasach nadrzędnych, ponieważ uniemożliwia klasom niepodrzędnym uzyskanie dostępu do atrybutów danych klasy nadrzędnej.

W dalszej części kodu zapoznasz się z konstruktorami, pobierającymi i ustawiającymi, które są ogólnymi blokami konstrukcyjnymi dla każdej klasy Java. Na koniec zapoznasz się z dwiema metodami (sok i jedzenie), które są tworzone w klasie nadrzędnej naszego programu, ponieważ są one uniwersalne dla wszystkich owoców — wszystkie owoce można jeść i wyciskać sok.

Tworzenie klas potomnych w Javie

Klasy podrzędne są zwykle nazywane klasami wyspecjalizowanymi lub pochodnymi, ponieważ dziedziczą stan i zachowanie od rodzica i często dostosowują te atrybuty, aby były bardziej szczegółowe.

Kontynuując nasz przykład, powinieneś być w stanie zobaczyć, dlaczego orange byłby odpowiednią klasą potomną powyższej klasy owoców.

Przykład pomarańczowej klasy dziecka


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

Istnieje różnica między tym, jak wygląda zwykła deklaracja klasy Java, a tym, co mamy w powyższym kodzie. Słowo kluczowe extends jest używane w Javie, aby umożliwić dziedziczenie.

W naszym przykładzie powyżej klasa potomna (pomarańczowa) rozszerza klasę rodzicielską (owoc). Dlatego stan i zachowanie klasy owoców mogą być teraz dostępne i modyfikowane przez klasę orange.

Unikalny atrybut, który posiada nasza klasa pomarańczy jest identyfikowany ze zmienną nazwą supremes (która jest oficjalną nazwą małych segmentów występujących w pomarańczach). W tym miejscu w grę wchodzi specjalizacja; nie wszystkie owoce mają supremes, ale wszystkie pomarańcze mają, więc zarezerwowanie zmiennej supremes dla klasy pomarańczy jest logiczne.

Dodanie metody obierania do istniejących wcześniej metod jedzenia i soku jest również logiczne, ponieważ chociaż nie wszystkie owoce można obrać, często obiera się pomarańcze.

Należy pamiętać, że gdybyśmy nie zamierzali zmieniać dotychczasowych metod jedzenia i soku, nie musielibyśmy włączać ich do naszej klasy pomarańczy. Metody w klasie orange zastępują wszystkie podobne metody w klasie owoców. Gdyby więc wszystkie owoce były zjadane i wyciskane w ten sam sposób, nie musielibyśmy tworzyć tych metod w klasie pomarańczy.

Konstruktorzy ról grają w dziedziczeniu

Domyślnie konstruktory klas nadrzędnych są dziedziczone przez klasy podrzędne. Dlatego jeśli tworzony jest obiekt klasy potomnej, oznacza to, że obiekt klasy nadrzędnej jest również tworzony automatycznie.

Wracając do naszego przykładu, za każdym razem, gdy tworzony jest nowy pomarańczowy obiekt, tworzony jest również obiekt owocu, ponieważ pomarańcza jest owocem.

Za kulisami, gdy tworzony jest obiekt klasy potomnej, najpierw wywoływany jest konstruktor klasy nadrzędnej, a następnie konstruktor klasy potomnej. W naszej pomarańczowej klasie potomnej powyżej, jeśli pomarańczowy obiekt zostanie utworzony bez żadnych parametrów, zostanie wywołany nasz domyślny konstruktor klasy owocowej, a następnie domyślny wykonawca klasy pomarańczowej.

Super metoda w naszym głównym konstruktorze powyżej jest konieczna, ponieważ określa, że ​​główny konstruktor — a nie domyślny konstruktor — nadrzędnej klasy owocu powinien być wywoływany za każdym razem, gdy tworzony jest pomarańczowy obiekt z parametrami.

Teraz możesz używać dziedziczenia w Javie

Z tego artykułu można było dowiedzieć się, czym jest dziedziczenie, jak działa i dlaczego jest tak ważnym pojęciem w programowaniu. Możesz teraz tworzyć relacje dziedziczenia za pomocą języka programowania Java. Co więcej, wiesz już, jak obejść pojedynczą regułę dziedziczenia Javy, tworząc relację dziadków.

Źródło: Andreas Wohlfahrt / Pexels

Udział Udział Ćwierkać E-mail Jak uporządkować kod obiektowy za pomocą dziedziczenia

Właściwe programowanie obiektowe oznacza, że ​​musisz wiedzieć o dziedziczeniu oraz o tym, jak może uprościć kodowanie i zmniejszyć liczbę błędów.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Jawa
  • Programowanie obiektowe
O autorze Kadeisha Kean(21 opublikowanych artykułów)

Kadeisha Kean jest programistą zajmującym się pełnymi stosami oprogramowania i pisarzem technicznym/technologicznym. Ma wyraźną umiejętność upraszczania niektórych z najbardziej złożonych koncepcji technologicznych; produkcja materiału, który może być łatwo zrozumiały dla każdego nowicjusza w dziedzinie technologii. Pasjonuje się pisaniem, tworzeniem ciekawego oprogramowania i podróżowaniem po świecie (poprzez filmy dokumentalne).

Więcej od Kadeishy Kean

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować