Prehľad dedičstva v Jave
Na rozdiel od iných programovacích jazykov, napríklad C, Java ponúka mechanizmus, pomocou ktorého sú dátové členy a metódy jednej triedy zdedené inou triedou. Tento proces sa v Jave nazýva Dedičnosť. Aby sa dedilo z triedy, používa sa kľúčové slovo „rozširuje“. Dedičnosť v jazyku Java umožňuje opakované použitie kódu, takže trieda musí iba napísať jedinečné vlastnosti a zvyšok kódu je možné rozšíriť z inej triedy. Trieda, ktorá zdedí po inej triede, sa nazýva podtrieda alebo podradená trieda a zdedená trieda sa nazýva rodičovská trieda alebo nadtrieda. Syntax, typy a implementácia dedičstva sa bude diskutovať v nasledujúcich častiach.
Druhy dedičstva v Jave
Dedičstvo znamená vzťah IS-A, ktorý je inak známy ako vzťah rodič-dieťa. Rodič a dieťa sú už uvedení v úvodnej časti.
Predtým, ako prejdeme na typy dedičstva v jave, najprv sa pozrime na syntax dedičstva.
syntaxe:
class apple extends fruit
(
//methods and fields
)
Apple je tu podtrieda a ovocie je materskou triedou. To znamená, že jablko má určité jedinečné vlastnosti a má aj vlastnosti ovocia.
V Jave sú 4 rôzne typy dedičnosti.
- Jednotné dedičstvo
- Viacúrovňové dedičstvo
- Hierarchické dedičstvo
- Viacnásobné dedičstvo (pomocou rozhraní)
Pozrime sa na každú z nich podrobne.
1. Jediné dedičstvo
Trieda, ktorá rozširuje iba jednu triedu. V nasledujúcom príklade trieda jabĺk rozširuje ovocie triedy.
tj Ovocie je nadtrieda a Apple je podtrieda, ktorá rozširuje vlastnosti a správanie triedy Ovocie.
Nasleduje ukážka jedného dedičstva v Jave.
kód:
//Java program to demonstrate Single Inheritance
//parent class
class fruit (
public void taste()
(
System.out.println("Fruits are sweet");
)
)
//child class of fruit
class apple extends fruit
(
public void shape()
(
System.out.println("Apple is round");
)
)
public class InheritanceExample
(
public static void main(String() args) (
apple fr = new apple(); //object of child class
fr.taste(); //call method of parent class
fr.shape(); //call method of child class
)
)
Výkon:
2. Viacúrovňové dedičstvo
V tomto type dedičstva sa trieda rozšíri z inej triedy a odvodená trieda bude fungovať ako základná trieda pre inú triedu.
Napríklad na obrázku je štvorkolka triedy rodičovská trieda a auto je odvodená trieda štvorkolesovej triedy. Vozidlo triedy môže byť zároveň základnou triedou triedy Maruti.
kód:
//Java program to demonstrate Multiple Inheritance
//parent class
class fourwheeler (
public void wheels()
(
System.out.println("I have 4 wheels");
)
)
//child class of fourwheeler and parent of maruti
class car extends fourwheeler
(
public void type()
(
System.out.println("I'm a car");
)
)
//child class of car class
class maruti extends car
(
public void comp()
(
System.out.println("I'm maruti");
)
)
public class InheritanceExample
(
public static void main(String() args) (
maruti fr = new maruti(); //object of child class
fr.wheels();
fr.type();
fr.comp();
)
)
Výkon:
3. Hierarchické dedičstvo
V hierarchickom dedičstve má základná trieda viac ako jednu podradenú triedu, čo znamená, že vlastnosti triedy získavajú rôzne triedy.
Napríklad vozidlo triedy má podtriedy áut, bicyklov, skútrov.
kód:
//Java program to demonstrate Hierarchical Inheritance
//parent class
class vehicle (
public void wheels()
(
System.out.println("I have wheels");
)
)
//first child class of vehicle class
class bike extends vehicle
(
public void countwl()
(
System.out.println("I am a bike and has 2 wheels");
)
)
//second child class of vehicle class
class car extends vehicle
(
public void countwlc()
(
System.out.println("I am a car and has 4 wheels");
)
)
//third child class of vehicle class
class scooter extends vehicle
(
public void countwls()
(
System.out.println("I am a scooter and has 2 wheels");
)
)
public class InheritanceExample
(
public static void main(String() args) (
scooter sc = new scooter(); //object of scooter class
sc.wheels();
sc.countwls();
car c = new car(); //object of car class
c.wheels();
c.countwlc();
bike b= new bike();//object of bike class
b.wheels();
b.countwl();
)
)
Výkon:
4. Viacnásobné dedičstvo
Viacnásobné dedičstvo v jave je typ dedičstva, v ktorom má trieda viac ako jednu nadradenú triedu.
Napríklad trieda C nadobúda vlastnosti tried A aj B.
Avšak v Jave sa viacnásobné dedičstvo dá dosiahnuť iba pomocou rozhraní.
Predpokladajme, že viac dedení je implementovaných rovnako ako iné typy dedičstva, môže sa vyskytnúť chyba kompilácie nasledovne.
kód:
//Java program to demonstrate multiple Inheritance
//parent class
class A
(
public void hh()
(
System.out.println("A is working");
)
)
class B
(
public void hh()
(
System.out.println("B is working");
)
)
class C extends A, B
(
//code for class c
)
public class InheritanceExample
(
public static void main(String() args) (
C sc = new C(); //object of C class
C.hh();
)
)
Výstup sa tu nezobrazí, pretože obsahuje chybu kompilácie.
Dôležitosť dedičstva v Jave
- Opätovné použitie kódu: Dedičnosť pomáha pri znižovaní prepisovania kódu. tj Kód môžu byť opakovane použité inými triedami a podradená trieda musí písať iba svoje vlastné jedinečné vlastnosti. To znižuje časovú náročnosť a zložitosť kódu.
- Pre potlačenie metódy: Metóda, ktorá už existuje v nadradenej triede, je deklarovaná podradenou triedou, potom je známa ako nahradenie metódy.
syntaxe:
final class A
(
. . .
)
Class B extends A
(
. . .
)
V takom prípade sa vygeneruje chyba, ktorá hovorí „Nedá sa dediť od posledného A“.
záver
Dedičnosť v Jave je vlastnosť, ktorou vlastnosti a správanie sa triedy získava iná trieda, aby sa zabezpečila opakovaná použiteľnosť kódu. V Jave existujú rôzne typy dedičstva, ako napríklad Single Inheritance, Multi-level Inheritance, Hierarchical Inheritance a Multiple Inheritance v Java. V tomto dokumente je popísaných niekoľko dôležitých aspektov dedičstva.
Odporúčané články
Toto je sprievodca dedičstvom v jazyku Java. Tu diskutujeme dôležitosť a rôzne typy dedičnosti v jave spolu so syntaxou, príkladmi a implementáciou kódu. Viac informácií nájdete aj v nasledujúcich článkoch
- JScrollPane v Jave
- Relácie v PHP
- Triedenie v Jave
- Čo je to Java Garbage Collector?
- Java Deployment Tools
- Prevláda v Jave
- Dedičnosť v PHP