Perintö on olio-ohjelmoinnin tehokkain ominaisuus. Sen avulla voimme periä yhden luokan ominaisuudet toiseen luokkaan. Tässä osiossa keskustelemme perinnön tyypit Javassa syvällisemmin tosielämän esimerkein. Lisäksi teemme Java-ohjelmia toteuttamaan erilaisten perinnön käsitteitä.
Perintö
Perintö on mekanismi, jolla saadaan uusi luokka olemassa olevasta luokasta. Olemassa oleva (vanha) luokka tunnetaan nimellä perusluokka tai superluokka tai vanhempi luokka . Uusi luokka tunnetaan nimellä a johdettu luokka tai alaluokka tai lasten luokka . Sen avulla voimme käyttää yhden luokan (vanhemman) ominaisuuksia ja käyttäytymistä toisessa luokassa (lapsi).
Luokka, jonka ominaisuudet ovat periytyviä, tunnetaan nimellä vanhempi luokka ja luokka, joka perii emoluokan ominaisuudet, tunnetaan nimellä lasten luokka . Siten se perustaa vanhemman ja lapsiluokan välisen suhteen, joka tunnetaan nimellä vanhempi-lapsi tai On suhdetta.
Oletetaan, että on kaksi nimettyä luokkaa Isä ja Lapsi ja haluamme periä Isä-luokan ominaisuudet Lapsi-luokassa. Voimme saavuttaa tämän käyttämällä ulottuu avainsana.
//inherits the properties of the Father class class Child extends Father { //functionality }
Milloin meidän pitäisi käyttää perintöä?
Perintö tarjoaa uudelleenkäytettävyyttä koodia, varsinkin kun on olemassa suuri määrä koodia uudelleenkäytettäväksi. Se myös määrittää eri luokkien välisen suhteen, joka tunnetaan nimellä a On suhdetta. Voimme myös käyttää sitä, jos haluamme saavuttaa menetelmän ohittaminen .
muuntaa merkkijono jsonobject javaksi
Muistettavat kohdat
- Rakentajaa ei voi periä Javassa.
- Yksityiset jäsenet eivät peri Javalla.
- Javalla ei sallita syklistä periytymistä.
- Määritä yläviittaus aliobjekteille.
- Konstruktorit suoritetaan, koska super() on läsnä konstruktorissa.
Perinnön tyypit
Java tukee seuraavia neljää perintötyyppiä:
- Yksittäinen perintö
- Monitasoinen perintö
- Hierarkkinen perintö
- Hybridiperintö
Huomautus: Java ei tue useampaa periytymistä.
Keskustellaan jokaisesta sopivalla esimerkillä.
Yksittäinen perintö
Yksittäisessä perinnössä alaluokka johdetaan vain yhdestä superluokasta. Se perii yhden vanhemman luokan ominaisuudet ja käyttäytymisen. Joskus se tunnetaan myös nimellä yksinkertainen perintö .
mikä on 10 miljoonasta
Yllä olevassa kuvassa Työntekijä on vanhempiluokka ja Executive on lapsiluokka. Executive-luokka perii kaikki Employee-luokan ominaisuudet.
Toteutetaan yksittäinen periytymismekanismi Java-ohjelmassa.
Executive.java
class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } }
Lähtö:
Total salary credited: 414408.0 Bonus of six months: 18000.0
Monitasoinen perintö
Sisään monitasoinen perintö , luokka on johdettu luokasta, joka on johdettu myös toisesta luokasta, kutsutaan monitasoiseksi periytymiseksi. Yksinkertaisesti sanottuna voimme sanoa, että luokkaa, jolla on useampi kuin yksi emoluokka, kutsutaan monitasoiseksi periytymiseksi. Huomaa, että luokkien tulee olla eri tasoisia. Siten on olemassa yksi perusluokka ja yksi johdettu luokka, mutta useita väliperusluokkia.
Yllä olevassa kuvassa luokka Marks perii Opiskelijat-luokan jäsenet tai menetelmät. Luokka Urheilu perii Marks-luokan jäsenet. Siksi Opiskelija-luokka on Marks-luokan pääluokka ja luokka Marks on Urheilu-luokan vanhempi. Näin ollen luokka Urheilu perii implisiittisesti Opiskelijan ominaisuudet yhdessä luokan Marks kanssa.
Toteutetaan monitasoinen perintömekanismi Java-ohjelmaan.
MultilevelinheritanceExample.java
//super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } }
Lähtö:
registration number= 0987 marks= 78.0 score= 68.7
Hierarkkinen perintö
Jos yhdestä perusluokasta johdetaan useita luokkia, sitä kutsutaan hierarkkinen perintö .
Yllä olevassa kuvassa luokat Tiede, Kauppa ja Taide perivät yhden vanhemman luokan nimeltä Student.
Toteutetaan hierarkkinen periytymismekanismi Java-ohjelmassa.
lajitella arraylist
Hierarchical HeritanceExample.java
//parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } }
Lähtö:
The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked.
Hybridiperintö
Hybridivälineet koostuvat useammasta kuin yhdestä. Hybridiperintö on kahden tai useamman perinnön tyypin yhdistelmä.
Yllä olevassa kuvassa Isoisä on superluokka. Isä-luokka perii Isoisä-luokan ominaisuudet. Koska isä ja isoisä edustavat yhtä perintöä. Lisäksi Isä-luokan perii Poika ja tytär -luokka. Siten Isästä tulee Pojan ja Tyttären vanhempiluokka. Nämä luokat edustavat hierarkkista perintöä. Yhdessä se tarkoittaa hybridiperintöä.
linux muuttaa hakemiston nimeä
Toteutetaan hybridiperintömekanismi Java-ohjelmassa.
Tytär.java
//parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } }
Lähtö:
I am daughter.
Useita perintöjä (ei tuettu)
Java ei tue useita perintöjä epäselvyyden vuoksi. Harkitse esimerkiksi seuraavaa Java-ohjelmaa.
Demo.java
class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } }
Yllä oleva koodi antaa virheen, koska kääntäjä ei voi päättää, mikä viestin()-metodi tulee kutsua. Tästä syystä Java ei tue useita perintöjä luokkatasolla, mutta se voidaan saavuttaa käyttämällä käyttöliittymä .