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
- varten Menetelmän ohittaminen (niin ajonaikainen polymorfismi voidaan saavuttaa).
- Koodin uudelleenkäytettävyyden vuoksi.
Perinnössä käytetyt termit
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ä
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.
Huomautus: Java ei tue useampaa periytymistä luokan kautta.
Kun yksi luokka perii useita luokkia, sitä kutsutaan moniperinnöksi. Esimerkiksi:
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