Mantojums Java valodā ir mehānisms, kurā viens objekts iegūst visas galvenā objekta īpašības un darbības. Tā ir svarīga sastāvdaļa OOP (Objektorientētā programmēšanas sistēma).
Java mantojuma ideja ir tāda, ka varat izveidot jaunu klases kas ir balstīti uz esošajām klasēm. Mantojot no esošas klases, varat atkārtoti izmantot vecākklases metodes un laukus. Turklāt jūs varat pievienot jaunas metodes un laukus arī savā pašreizējā klasē.
Mantojums apzīmē IS-Attiecības kas ir pazīstams arī kā a vecāks-bērns attiecības.
Kāpēc izmantot mantojumu Java
- Priekš Metodes ignorēšana (tātad izpildlaika polimorfisms var sasniegt).
- Koda atkārtotai izmantošanai.
Mantojumā lietotie termini
Java mantojuma sintakse
class Subclass-name extends Superclass-name { //methods and fields }
The paplašina atslēgvārdu norāda, ka veidojat jaunu klasi, kas izriet no esošas klases. Vārda “paplašinās” nozīme ir palielināt funkcionalitāti.
javascript tuvākais
Java terminoloģijā mantoto klasi sauc par vecāku vai virsklasi, un jauno klasi sauc par bērnu vai apakšklasi.
Java mantojuma piemērs
Kā parādīts iepriekšējā attēlā, Programmētājs ir apakšklase un Darbinieks ir virsklase. Attiecības starp abām klasēm ir Programmētājs IS-A darbinieks . Tas nozīmē, ka programmētājs ir darbinieka veids.
e-bankas ierobežojumi
class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } }Izmēģiniet to tūlīt
Programmer salary is:40000.0 Bonus of programmer is:10000
Iepriekš minētajā piemērā programmētāja objekts var piekļūt savas klases laukam, kā arī darbinieku klases laukam, t.i., koda atkārtotai izmantošanai.
Mantojuma veidi Java
Pamatojoties uz klasi, java var būt trīs mantojuma veidi: viens, daudzlīmeņu un hierarhisks.
Java programmēšanā vairākkārtēja un hibrīda mantošana tiek atbalstīta tikai caur interfeisu. Par saskarnēm mēs uzzināsim vēlāk.
Piezīme. Java netiek atbalstīta vairāku veidu mantošana caur klasi.
Ja viena klase manto vairākas klases, to sauc par vairāku mantojumu. Piemēram:
Viena mantojuma piemērs
Kad klase manto citu klasi, to sauc par a vienreizējs mantojums . Tālāk sniegtajā piemērā suņu klase manto klasi Animal, tātad ir vienīgais mantojums.
Fails: TestInheritance.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }}
Izvade:
barking... eating...
Daudzlīmeņu mantojuma piemērs
Ja pastāv mantojuma ķēde, to sauc par daudzlīmeņu mantojums . Kā redzams tālāk sniegtajā piemērā, BabyDog klase manto Dog klasi, kas atkal manto Animal klasi, tāpēc pastāv daudzlīmeņu mantošana.
java slēdža paziņojums
Fails: TestInheritance2.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }}
Izvade:
weeping... barking... eating...
Hierarhiskās mantošanas piemērs
Ja divas vai vairākas klases manto vienu klasi, to sauc par hierarhiskā mantošana . Tālāk sniegtajā piemērā suņu un kaķu klases manto klasi Dzīvnieki, tāpēc pastāv hierarhiska mantošana.
Fails: TestInheritance3.java
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }}
Izvade:
meowing... eating...
J) Kāpēc Java netiek atbalstīta vairākkārtēja mantošana?
Lai samazinātu sarežģītību un vienkāršotu valodu, java netiek atbalstīta vairākkārtēja mantošana.
Java atsauces veidi
Apsveriet scenāriju, kurā A, B un C ir trīs klases. C klase manto A un B klasi. Ja A un B klasēm ir viena un tā pati metode un jūs to izsaucat no bērnklases objekta, būs neskaidrības izsaukt A vai B klases metodi.
Tā kā kompilēšanas laika kļūdas ir labākas nekā izpildlaika kļūdas, Java atveido kompilēšanas laika kļūdu, ja mantojat 2 klases. Tātad, neatkarīgi no tā, vai jums ir tāda pati vai atšķirīga metode, būs kompilēšanas laika kļūda.
class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } }Izmēģiniet to tūlīt
Compile Time Error