logo

Javalla perinnöllisyys

  1. Perintö
  2. Perinnön tyypit
  3. Miksi moniperintö ei ole mahdollista Javassa luokan tapauksessa?

Javalla perinnöllisyys on mekanismi, jossa yksi objekti hankkii kaikki emoobjektin ominaisuudet ja käyttäytymiset. Se on tärkeä osa Oho (Object Oriented ohjelmointijärjestelmä).

Java-perinnön ideana on, että voit luoda uutta luokat jotka perustuvat olemassa oleviin luokkiin. Kun perit olemassa olevasta luokasta, voit käyttää uudelleen pääluokan menetelmiä ja kenttiä. Lisäksi voit lisätä uusia menetelmiä ja kenttiä myös nykyiseen luokkaasi.

Perintö edustaa IS-suhde joka tunnetaan myös nimellä a vanhempi-lapsi suhdetta.

Miksi käyttää perintöä javassa

Perinnössä käytetyt termit

    Luokka:Luokka on joukko objekteja, joilla on yhteisiä ominaisuuksia. Se on malli tai suunnitelma, josta objektit luodaan.Alaluokka/lapsiluokka:Alaluokka on luokka, joka perii toisen luokan. Sitä kutsutaan myös johdetuksi luokaksi, laajennetuksi luokaksi tai lapsiluokiksi.Superluokka/vanhempien luokka:Superluokka on luokka, josta alaluokka perii ominaisuudet. Sitä kutsutaan myös perusluokiksi tai yläluokiksi.Uudelleenkäytettävyys:Kuten nimestä käy ilmi, uudelleenkäytettävyys on mekanismi, jonka avulla voit käyttää uudelleen olemassa olevan luokan kenttiä ja menetelmiä, kun luot uutta luokkaa. Voit käyttää samoja kenttiä ja menetelmiä, jotka on jo määritelty edellisellä luokalla.

Java-perinnön syntaksi

 class Subclass-name extends Superclass-name { //methods and fields } 

The laajentaa avainsanaa ilmaisee, että olet tekemässä uutta luokkaa, joka on johdettu olemassa olevasta luokasta. 'Laajentaa' tarkoittaa toiminnallisuuden lisäämistä.

kuinka tehdä uusiksi Photoshopissa

Java-terminologiassa perittyä luokkaa kutsutaan ylä- tai yläluokiksi ja uutta luokkaa ali- tai aliluokkaksi.


Esimerkki Java-perinnöstä

Javalla perinnöllisyys

Kuten yllä olevasta kuvasta näkyy, Ohjelmoija on alaluokka ja Työntekijä on yläluokka. Kahden luokan välinen suhde on Ohjelmoija IS-A työntekijä . Se tarkoittaa, että ohjelmoija on eräänlainen työntekijä.

leksikografisesti
 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); } } 
Testaa nyt
 Programmer salary is:40000.0 Bonus of programmer is:10000 

Yllä olevassa esimerkissä Ohjelmoijaobjekti voi päästä oman luokan kenttään sekä Employee-luokan eli koodin uudelleenkäytettävyyden kenttään.


Perinnön tyypit javassa

Luokan perusteella javassa voi olla kolmenlaisia ​​perintöjä: yksi, monitasoinen ja hierarkkinen.

Java-ohjelmoinnissa moni- ja hybridiperintöä tuetaan vain käyttöliittymän kautta. Opimme käyttöliittymistä myöhemmin.

Javan perinnön tyypit

Huomautus: Java ei tue useampaa periytymistä luokan kautta.

Kun yksi luokka perii useita luokkia, sitä kutsutaan moniperinnöksi. Esimerkiksi:

Moniperintö Javassa

Esimerkki yksittäisestä perinnöstä

Kun luokka perii toisen luokan, sitä kutsutaan nimellä a yksittäinen perintö . Alla olevassa esimerkissä koiraluokka perii Animal-luokan, joten on olemassa yksittäinen perintö.

Tiedosto: 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(); }} 

Lähtö:

 barking... eating... 

Esimerkki monitasoisesta perinnöstä

Kun on olemassa perintöketju, se tunnetaan nimellä monitasoinen perintö . Kuten alla olevasta esimerkistä näet, BabyDog-luokka perii Dog-luokan, joka taas perii Animal-luokan, joten kyseessä on monitasoinen perintö.

merkkijono kokonaisluvuksi

Tiedosto: 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(); }} 

Lähtö:

 weeping... barking... eating... 

Esimerkki hierarkkisesta periytymisestä

Kun kaksi tai useampi luokka perii yhden luokan, sitä kutsutaan nimellä hierarkkinen perintö . Alla olevassa esimerkissä koira- ja kissaluokat perivät Eläimet-luokan, joten kyseessä on hierarkkinen perintö.

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

Lähtö:

 meowing... eating... 

K) Miksi java ei tue moniperintöä?

Monimutkaisuuden vähentämiseksi ja kielen yksinkertaistamiseksi moniperintöä ei tueta javassa.

pandan kääntöpiste

Tarkastellaan skenaariota, jossa A, B ja C ovat kolme luokkaa. C-luokka perii A- ja B-luokat. Jos A- ja B-luokilla on sama menetelmä ja kutsut sitä aliluokan objektista, on epäselvyyttä kutsua A- tai B-luokan metodia.

Koska käännösaikavirheet ovat parempia kuin ajonaikaiset virheet, Java tekee käännösaikavirheen, jos perit 2 luokkaa. Joten onko sinulla sama tai eri menetelmä, käännösaikavirhe.

 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? } } 
Testaa nyt
 Compile Time Error