Zkoumání dědičnosti v programovacím jazyce Java

Zkoumání dědičnosti v programovacím jazyce Java

Dědičnost je jedním z klíčových konceptů objektově orientovaného programování. V programování slovo dědičnost představuje vztah, ve kterém podřízená třída převezme stav a chování nadřazené třídy.





Účelem dědičnosti při vývoji softwaru je usnadnit opětovné použití bezpečného a spolehlivého softwaru. Jednou z hlavních výhod používání dědičnosti je, že ve vašich programech eliminuje nadbytečný kód.





notepad ++ správce pluginů chybí

Jak funguje dědičnost

Myšlenka dědičnosti spočívá v tom, že mnoho tříd nebo objektů má některou ze stejné sady atributů a metod. V duchu vytváření spolehlivého softwaru proto mohou nové třídy nyní čerpat z již existujících souvisejících tříd a v případě potřeby rozšířit stávající stavy a chování.





Skutečným příkladem fungování dědičnosti by bylo uvažovat o ovoci. Jedná se o široký štítek, který slouží k zapouzdření řady různých položek.

Jablko je ovoce, stejně jako pomeranč. Pomeranč však není jablko, takže pokud jste vlastnili obchod, neměli byste ovoce jako jednu ze svých skladových položek. Možná byste mohli mít ve svém inventáři sekci ovoce a v této sekci byste měli konkrétnější položky, jako jsou jablka a pomeranče.



Tak funguje dědičnost.

Použití dědičnosti v Javě

Dědičnost lze použít v jakémkoli programovacím jazyce, který používá paradigma objektově orientovaného programování. Přesný způsob, jakým se používá dědičnost, však závisí na konkrétním programovacím jazyce.





Například, C ++ je také objektově orientovaný programovací jazyk . C ++ podporuje takzvanou vícenásobnou dědičnost, zatímco Java podporuje pouze jednu dědičnost.

To znamená, že v Javě může mít nadřazená třída mnoho podřízených tříd, ale každá podřízená třída může mít pouze jednu nadřazenou třídu (jedinou dědičnost). Existuje však způsob, jak dosáhnout nepřímé vícenásobné dědičnosti v Javě vytvořením vztahu prarodič, rodič a dítě.





Vytvoření rodičovské třídy v Javě

Proces výběru nadřazené třídy z dokumentu softwarových požadavků se nazývá objektově orientovaná analýza. Během tohoto procesu se fráze a často používá k identifikaci možných dědičných vztahů. Na základě výše uvedeného příkladu byste měli vidět, že ovoce bude naší mateřskou třídou.

Příklad třídy rodičů ovoce


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
}
}

Jedním z nejpozoruhodnějších aspektů výše uvedené nadřazené třídy je modifikátor přístupu, který se používá s každou deklarací proměnné. Modifikátor chráněného přístupu je ideální pro použití v nadřazených třídách, protože brání třídám, které nejsou podřízené, získat přístup k datovým atributům nadřazené třídy.

Dále v kódu se seznámíte s konstruktory, getry a settery, které jsou obecnými stavebními bloky pro jakoukoli třídu Java. Nakonec jste seznámeni se dvěma metodami (džus a jíst), které jsou vytvořeny v rodičovské třídě našeho programu, protože jsou univerzální pro všechny druhy ovoce - veškeré ovoce lze jíst a odšťavňovat.

Vytváření podřízených tříd v Javě

Podřízené třídy se obvykle nazývají specializované nebo odvozené třídy, protože dědí stav a chování po rodičích a často přizpůsobují tyto atributy tak, aby byly konkrétnější.

Pokračováním našeho příkladu byste měli pochopit, proč by oranžová byla vhodnou podřízenou třídou ovocné třídy výše.

Příklad Orange Child Class


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
}
}

Je rozdíl mezi tím, jak vypadá běžná deklarace třídy Java, a tím, co máme v našem kódu výše. Klíčové slovo extends je to, co se v Javě používá k umožnění dědičnosti.

V našem příkladu výše podřízená třída (oranžová) rozšiřuje nadřazenou třídu (ovoce). Proto lze stav a chování třídy ovoce nyní přistupovat a upravovat oranžovou třídou.

Jedinečný atribut, který má naše oranžová třída, je identifikován s názvem proměnné supremes (což je oficiální název pro malé segmenty nalezené v pomerančích). Zde vstupuje do hry specializace; ne všechny plody mají přednost, ale všechny pomeranče ano, takže rezervovat proměnnou supremes pro třídu pomerančů je logické.

Přidání metody loupání k již existujícím metodám pojídání a šťávy je také logické, protože ačkoliv ne všechny plody lze loupat, pomeranče se často loupou.

Měli byste mít na paměti, že pokud bychom neměli v úmyslu změnit stávající metody jíst a šťávy, nemuseli bychom je zařazovat do naší třídy pomerančů. Metody ve třídě pomerančů mají přednost před jakoukoli podobnou metodou ve třídě ovoce. Pokud by tedy bylo všechno ovoce snědeno a odšťavněno stejným způsobem, nemuseli bychom tyto metody vytvářet ve třídě pomerančů.

The Role Constructors Play in Inheritance

Ve výchozím nastavení jsou konstruktory nadřazené třídy děděny podřízenými třídami. Pokud je tedy vytvořen objekt podřízené třídy, znamená to, že se automaticky vytvoří také objekt nadřazené třídy.

Když se vrátíme k našemu příkladu, pokaždé, když se vytvoří nový oranžový předmět, vytvoří se také ovocný objekt, protože pomeranč je ovoce.

V zákulisí, když je vytvořen objekt podřízené třídy, je nejprve vyvolán konstruktor nadřazené třídy a poté konstruktor podřízené třídy. V naší oranžové podřízené třídě výše, pokud je oranžový objekt vytvořen bez jakýchkoli parametrů, bude vyvolán náš výchozí konstruktor třídy ovoce, následovaný naším výchozím dodavatelem oranžové třídy.

Metoda super v našem primárním konstruktoru výše je nezbytná, protože určuje, že primární konstruktor - a nikoli výchozí konstruktor - nadřazené třídy ovoce by měl být volán vždy, když je vytvořen oranžový objekt s parametry.

Nyní můžete použít dědičnost v Javě

Z tohoto článku jste se mohli dozvědět, co je to dědičnost, jak to funguje a proč je to tak důležitý koncept v programování. Nyní můžete vytvářet své dědičné vztahy pomocí programovacího jazyka Java. Kromě toho nyní víte, jak obejít jediné pravidlo dědičnosti Javy vytvořením vztahu prarodiče.

Uznání: Andreas Wohlfahrt / Pexels

Podíl Podíl tweet E-mailem Jak uspořádat objektově orientovaný kód s dědičností

Správné objektově orientované programování znamená, že potřebujete vědět o dědičnosti a o tom, jak může zjednodušit kódování a omezit chyby.

Číst dále
Související témata
  • Programování
  • Jáva
  • Objektově orientované programování
O autorovi Kadeisha Kean(21 článků zveřejněno)

Kadeisha Kean je vývojář softwaru a technický/technologický spisovatel v plném zásobníku. Má výraznou schopnost zjednodušit některé z nejsložitějších technologických konceptů; produkující materiál, kterému každý technologický nováček snadno porozumí. Je nadšená psaním, vývojem zajímavého softwaru a cestováním po světě (prostřednictvím dokumentů).

Více od Kadeisha Kean

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru