Java, paveldėjimas yra svarbus OOP (objektinio programavimo) ramstis. Tai yra Java mechanizmas, pagal kurį vienai klasei leidžiama paveldėti kitos klasės ypatybes (laukus ir metodus). „Java“ kalboje paveldėjimas reiškia naujų klasių kūrimą pagal esamas. Klasė, kuri paveldima iš kitos klasės, gali pakartotinai naudoti tos klasės metodus ir laukus. Be to, prie dabartinės klasės galite pridėti naujų laukų ir metodų.
Kodėl mums reikia „Java“ paveldėjimo?
- Kodo pakartotinis naudojimas: Superklasėje parašytas kodas yra bendras visiems poklasiams. Vaikų klasės gali tiesiogiai naudoti pirminės klasės kodą.
- Metodo nepaisymas: Metodo nepaisymas yra pasiekiama tik paveldėjimo būdu. Tai vienas iš būdų, kuriuo „Java“ pasiekia vykdymo laiko polimorfizmą.
- Abstrakcija: Abstraktaus samprata, kai neturime pateikti visų detalių, pasiekiama paveldėjimo būdu. Abstrakcija rodo tik funkcionalumą vartotojui.
Svarbios „Java“ paveldėjimo terminai
- Klasė: Klasė yra objektų rinkinys, turintis bendrų savybių / elgsenos ir bendrų savybių / atributų. Klasė nėra realaus pasaulio subjektas. Tai tik šablonas, planas arba prototipas, iš kurių kuriami objektai.
- Super klasė / tėvų klasė: Klasė, kurios savybės yra paveldimos, yra žinoma kaip superklasė (arba bazinė klasė arba pagrindinė klasė).
- Poklasė/vaikų klasė: Klasė, kuri paveldi kitą klasę, yra žinoma kaip poklasis (arba išvestinė klasė, išplėstinė klasė arba antrinė klasė). Poklasis gali pridėti savo laukus ir metodus, be aukščiausios klasės laukų ir metodų.
- Pakartotinis naudojimas: Paveldėjimas palaiko pakartotinio naudojimo koncepciją, t. y. kai norime sukurti naują klasę ir jau yra klasė, apimanti tam tikrą kodą, kurio mes norime, galime sukurti naują klasę iš esamos klasės. Tai darydami mes pakartotinai naudojame esamos klasės laukus ir metodus.
Kaip naudoti paveldėjimą Java?
The pratęsia raktinį žodį yra naudojamas paveldėjimui Java. Naudojant išplėstinį raktinį žodį, nurodoma, kad esate kilęs iš esamos klasės. Kitaip tariant, išplėtimas reiškia padidintą funkcionalumą.
Java pavadinimų konvencija
Sintaksė:
class DerivedClass extends BaseClass { //methods and fields }>
Paveldėjimas Java pavyzdys
Pavyzdys: Toliau pateiktame paveldėjimo pavyzdyje klasė „Dviračiai“ yra pagrindinė klasė, „MountainBike“ klasė yra išvestinė klasė, kuri išplečia dviračių klasę, o klasė „Test“ yra vairuotojo klasė programai vykdyti.
Java // Java program to illustrate the // concept of inheritance // base class class Bicycle { // the Bicycle class has two fields public int gear; public int speed; // the Bicycle class has one constructor public Bicycle(int gear, int speed) { this.gear = gear; this.speed = speed; } // the Bicycle class has three methods public void applyBrake(int decrement) { speed -= decrement; } public void speedUp(int increment) { speed += increment; } // toString() method to print info of Bicycle public String toString() { return ('No of gears are ' + gear + '
' + 'speed of bicycle is ' + speed); } } // derived class class MountainBike extends Bicycle { // the MountainBike subclass adds one more field public int seatHeight; // the MountainBike subclass has one constructor public MountainBike(int gear, int speed, int startHeight) { // invoking base-class(Bicycle) constructor super(gear, speed); seatHeight = startHeight; } // the MountainBike subclass adds one more method public void setHeight(int newValue) { seatHeight = newValue; } // overriding toString() method // of Bicycle to print more info @Override public String toString() { return (super.toString() + '
seat height is ' + seatHeight); } } // driver class public class Test { public static void main(String args[]) { MountainBike mb = new MountainBike(3, 100, 25); System.out.println(mb.toString()); } }>
Išvestis
No of gears are 3 speed of bicycle is 100 seat height is 25>
Aukščiau pateiktoje programoje, kai sukuriamas MountainBike klasės objektas, visų superklasės metodų ir laukų kopija įgauna šio objekto atmintį. Štai kodėl naudodami poklasio objektą galime pasiekti ir superklasės narius.
Atkreipkite dėmesį, kad paveldėjimo metu sukuriamas tik poklasio objektas, o ne superklasė. Norėdami sužinoti daugiau, žr „Java“ objektų kūrimas paveldėtos klasės .
2 pavyzdys: Toliau pateiktame paveldėjimo pavyzdyje klasė Darbuotojas yra pagrindinė klasė, klasė Inžinierius yra išvestinė klasė, praplečianti Darbuotojo klasę, o klasė Testas yra vairuotojo klasė programai paleisti.
Java // Java Program to illustrate Inheritance (concise) import java.io.*; // Base or Super Class class Employee { int salary = 60000; } // Inherited or Sub Class class Engineer extends Employee { int benefits = 10000; } // Driver Class class Gfg { public static void main(String args[]) { Engineer E1 = new Engineer(); System.out.println('Salary : ' + E1.salary + '
Benefits : ' + E1.benefits); } }>
Išvestis
Salary : 60000 Benefits : 10000>
Iliustracinis programos vaizdas:
dvigubai java

Praktikoje paveldėjimas ir polimorfizmas Jie naudojami kartu „Java“, kad būtų užtikrintas greitas kodo veikimas ir skaitomumas.
Java paveldėjimo tipai
Žemiau pateikiami įvairūs paveldėjimo tipai, kuriuos palaiko „Java“.
- Vienkartinis paveldėjimas
- Daugiapakopis paveldėjimas
- Hierarchinis paveldėjimas
- Daugybinis paveldėjimas
- Hibridinis paveldėjimas
1. Vienkartinis paveldėjimas
Vieno paveldėjimo atveju poklasis išvedamas tik iš vienos superklasės. Jis paveldi vienos iš tėvų klasės savybes ir elgesį. Kartais tai taip pat žinoma kaip paprastas paveldėjimas. Žemiau esančiame paveikslėlyje „A“ yra tėvų klasė, o „B“ yra vaikų klasė. Klasė „B“ paveldi visas „A“ klasės savybes.

Vienkartinis paveldėjimas
Java // Java program to illustrate the // concept of single inheritance import java.io.*; import java.lang.*; import java.util.*; // Parent class class One { public void print_geek() { System.out.println('Geeks'); } } class Two extends One { public void print_for() { System.out.println('for'); } } // Driver class public class Main { // Main function public static void main(String[] args) { Two g = new Two(); g.print_geek(); g.print_for(); g.print_geek(); } }>
Išvestis
Geeks for Geeks>
2. Daugiapakopis paveldėjimas
Daugiapakopėje paveldėjimo sistemoje išvestinė klasė paveldės bazinę klasę, o išvestinė klasė taip pat veikia kaip pagrindinė klasė kitoms klasėms. Žemiau esančiame paveikslėlyje A klasė yra pagrindinė išvestinės klasės B klasė, kuri savo ruožtu yra pagrindinė išvestinės klasės C klasė. Java klasėje negali tiesiogiai pasiekti senelių nariai .

Daugiapakopis paveldėjimas
Java // Importing required libraries import java.io.*; import java.lang.*; import java.util.*; // Parent class One class One { // Method to print 'Geeks' public void print_geek() { System.out.println('Geeks'); } } // Child class Two inherits from class One class Two extends One { // Method to print 'for' public void print_for() { System.out.println('for'); } } // Child class Three inherits from class Two class Three extends Two { // Method to print 'Geeks' public void print_lastgeek() { System.out.println('Geeks'); } } // Driver class public class Main { public static void main(String[] args) { // Creating an object of class Three Three g = new Three(); // Calling method from class One g.print_geek(); // Calling method from class Two g.print_for(); // Calling method from class Three g.print_lastgeek(); } }>
Išvestis
Geeks for Geeks>
3. Hierarchinis paveldėjimas
Hierarchiniame paveldėjime viena klasė yra viršklasė (bazinė klasė) daugiau nei vienam poklasiui. Žemiau esančiame paveikslėlyje A klasė yra pagrindinė išvestinių B, C ir D klasių klasė.
užblokuoti kontaktaiJava
// Java program to illustrate the // concept of Hierarchical inheritance class A { public void print_A() { System.out.println('Class A'); } } class B extends A { public void print_B() { System.out.println('Class B'); } } class C extends A { public void print_C() { System.out.println('Class C'); } } class D extends A { public void print_D() { System.out.println('Class D'); } } // Driver Class public class Test { public static void main(String[] args) { B obj_B = new B(); obj_B.print_A(); obj_B.print_B(); C obj_C = new C(); obj_C.print_A(); obj_C.print_C(); D obj_D = new D(); obj_D.print_A(); obj_D.print_D(); } }>
Išvestis
Class A Class B Class A Class C Class A Class D>
4. Daugkartinis paveldėjimas ( per sąsajas)
Į Keli paveldėjimai , viena klasė gali turėti daugiau nei vieną superklasę ir paveldėti funkcijas iš visų pirminių klasių. Atminkite, kad „Java“ tai daro ne parama daugybinis paveldėjimas su klasėmis. „Java“ galime pasiekti kelis paveldėjimus tik per Sąsajos . Žemiau esančiame paveikslėlyje C klasė gaunama iš A ir B sąsajų.

Daugybinis paveldėjimas
Java // Java program to illustrate the // concept of Multiple inheritance import java.io.*; import java.lang.*; import java.util.*; interface One { public void print_geek(); } interface Two { public void print_for(); } interface Three extends One, Two { public void print_geek(); } class Child implements Three { @Override public void print_geek() { System.out.println('Geeks'); } public void print_for() { System.out.println('for'); } } // Drived class public class Main { public static void main(String[] args) { Child c = new Child(); c.print_geek(); c.print_for(); c.print_geek(); } }>
Išvestis
Geeks for Geeks>
5. Hibridinis paveldėjimas
Tai dviejų ar daugiau pirmiau minėtų paveldėjimo tipų derinys. Kadangi Java nepalaiko kelių paveldėjimo su klasėmis, hibridinis paveldėjimas, apimantis kelis paveldėjimus, taip pat negalimas su klasėmis. „Java“ hibridinį paveldėjimą galime pasiekti tik per Sąsajos jei norime įtraukti daugkartinį paveldėjimą, kad įgyvendintume hibridinį paveldėjimą.
Tačiau svarbu atkreipti dėmesį į tai, kad hibridiniam paveldėjimui nebūtinai reikia naudoti tik daugialypį paveldėjimą. Tai galima pasiekti derinant daugiapakopį paveldėjimą ir hierarchinį paveldėjimą su klasėmis, hierarchinį ir vieną paveldėjimą su klasėmis. Todėl hibridinį paveldėjimą iš tiesų įmanoma įdiegti naudojant vien klases, nepasikliaujant kelių paveldėjimo tipais.

Hibridinis paveldėjimas
Java IS – santykių tipas
IS-A yra būdas pasakyti: Šis objektas yra to objekto tipas. Pažiūrėkime, kaip išplėstinis raktinis žodis naudojamas paveldėjimui pasiekti.
Java public class SolarSystem { } public class Earth extends SolarSystem { } public class Mars extends SolarSystem { } public class Moon extends Earth { }>
Dabar, remiantis pirmiau pateiktu pavyzdžiu, į objektus orientuotais terminais, teisinga:
- „SolarSystem“ yra Žemės klasės superklasė.
- „SolarSystem“ yra Marso klasės superklasė.
- Žemė ir Marsas yra Saulės sistemos klasės poklasiai.
- Mėnulis yra Žemės ir Saulės sistemos klasių poklasis.
class SolarSystem { } class Earth extends SolarSystem { } class Mars extends SolarSystem { } public class Moon extends Earth { public static void main(String args[]) { SolarSystem s = new SolarSystem(); Earth e = new Earth(); Mars m = new Mars(); System.out.println(s instanceof SolarSystem); System.out.println(e instanceof Earth); System.out.println(m instanceof SolarSystem); } }>
Išvestis
true true true>
Ką galima padaryti poklasyje?
Poklasiuose narius galime paveldėti tokius, kokie yra, juos pakeisti, paslėpti arba papildyti naujais nariais:
a-b genėjimas
- Paveldėti laukai gali būti naudojami tiesiogiai, kaip ir bet kurie kiti laukai.
- Poklasyje galime deklaruoti naujus laukus, kurių nėra superklasėje.
- Paveldėti metodai gali būti naudojami tiesiogiai tokius, kokie jie yra.
- Galime parašyti naują instancija metodas poklasyje, kurio parašas toks pat kaip ir superklasėje, taigi svarbiausias tai (kaip aukščiau pateiktame pavyzdyje, toString() metodas yra nepaisomas).
- Galime parašyti naują statinis metodas poklasyje, kurio parašas toks pat kaip ir superklasėje, taigi slepiasi tai.
- Poklasyje galime deklaruoti naujus metodus, kurių nėra superklasėje.
- Galime parašyti poklasio konstruktorių, kuris iškviečia superklasės konstruktorių, netiesiogiai arba naudojant raktinį žodį super .
„Java“ paveldėjimo pranašumai:
- Kodo pakartotinis naudojimas: Paveldėjimas leidžia pakartotinai naudoti kodą ir sumažina kodo, kurį reikia parašyti, kiekį. Poklasis gali pakartotinai panaudoti superklasės savybes ir metodus, sumažindamas kodo dubliavimą.
- Abstrakcija: Paveldėjimas leidžia sukurti abstrakčias klases, kurios apibrėžia bendrą sąsają susijusių klasių grupei. Tai skatina abstrakciją ir inkapsuliavimą, todėl kodą lengviau prižiūrėti ir išplėsti.
- Klasių hierarchija: Paveldėjimas leidžia sukurti klasių hierarchiją, kurią galima naudoti modeliuojant realaus pasaulio objektus ir jų ryšius.
- Polimorfizmas: Paveldėjimas leidžia polimorfizmą, ty objekto gebėjimą įgauti įvairias formas. Poklasiai gali nepaisyti superklasės metodų, o tai leidžia jiems įvairiais būdais keisti savo elgesį.
„Java“ paveldėjimo trūkumai:
- Sudėtingumas: dėl paveldėjimo kodas gali būti sudėtingesnis ir sunkiau suprantamas. Tai ypač aktualu, jei paveldėjimo hierarchija yra gili arba jei naudojami keli paveldėjimai.
- Tvirtas susiejimas: paveldėjimas sukuria glaudų superklasės ir poklasio ryšį, todėl sunku atlikti superklasės pakeitimus nepažeidžiant poklasio.
Išvada
Leiskite mums patikrinti keletą svarbių punktų iš straipsnio, paminėtų toliau:
- Numatytoji superklasė : Išskyrus Objektas klasė, kuri neturi viršklasės, kiekviena klasė turi vieną ir tik vieną tiesioginį superklasę (viengubas paveldėjimas). Nesant jokios kitos aiškios superklasės, kiekviena klasė netiesiogiai yra Object klasės poklasis.
- Superklasė gali būti tik viena: Superklasė gali turėti bet kokį skaičių poklasių. Tačiau poklasis gali turėti tik vienas superklasė. Taip yra todėl, kad „Java“ nepalaiko kelių klasių paveldėjimo. Nors su sąsajomis, Java palaiko kelis paveldėjimus.
- Paveldėti konstruktoriai: Poklasis paveldi visus narius (laukus, metodus ir įdėtas klases) iš savo superklasės. Konstruktoriai nėra nariai, todėl jų nepaveldi poklasiai, tačiau superklasės konstruktorių galima iškviesti iš poklasio.
- Privataus nario paveldėjimas: Poklasis nepaveldi savo pirminės klasės privačių narių. Tačiau jei superklasė turi viešus arba apsaugotus metodus (pvz., Getterius ir Seterius), leidžiančius pasiekti privačius laukus, juos taip pat gali naudoti poklasis.
DUK apie paveldėjimą
1. Kas yra paveldėjimo Java?
Paveldėjimas yra OOP sąvoka, kai viena klasė paveldi iš kitos klasės, kuri gali pakartotinai naudoti pagrindinės klasės metodus ir laukus.
2. Kokie yra 4 paveldėjimo tipai Java?
Yra vieno, kelių, daugiapakopių, hierarchinių ir hibridinių
3. Kas yra išplėstinio raktinio žodžio naudojimas?
Išplėsti raktinį žodį naudojamas vienos klasės paveldėjimui į kitą.
4. Koks yra „Java“ paveldėjimo pavyzdys?
Žemiau paminėtas realus „Java“ paveldėjimo pavyzdys:
Apsvarstykite transporto priemonių grupę. Turite sukurti autobusų, automobilių ir sunkvežimių klases. Metodai fuelAmount(), capaces(), applyBrakes() bus vienodi visoms trims klasėms.
Naudotos nuorodos:
- Pirmoji Java, kurią sukūrė Kathy Sierra ir Bert Bates
- „Java“: Herberto Schildto vadovas pradedančiajam
- Java: Herberto Schildto visa nuoroda
- Veiksminga „Java“, kurią sukūrė Joshua Bloch
- „Java: The Good Parts“, autorius Jimas Waldo.