logo

Mantojums Java valodā

  1. Mantojums
  2. Mantojuma veidi
  3. Kāpēc daudzkārtēja mantošana nav iespējama Java klasē klases gadījumā?

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

Mantojumā lietotie termini

    Klase:Klase ir objektu grupa, kam ir kopīgas īpašības. Tā ir veidne vai projekts, no kura tiek izveidoti objekti.Apakšklase/bērnu klase:Apakšklase ir klase, kas manto otru klasi. To sauc arī par atvasinātu klasi, paplašināto klasi vai atvasināto klasi.Superklase/vecāku klase:Superklase ir klase, no kuras apakšklase manto pazīmes. To sauc arī par bāzes klasi vai vecāku klasi.Atkārtota izmantošana:Kā norāda nosaukums, atkārtota izmantošana ir mehānisms, kas ļauj atkārtoti izmantot esošās klases laukus un metodes, kad veidojat jaunu klasi. Varat izmantot tos pašus laukus un metodes, kas jau definētas iepriekšējā klasē.

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

Mantojums Java valodā

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.

Mantojuma veidi Java valodā

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:

Vairāku mantojumu Java

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