Perintö sisään Java (esimerkillä)

⚡ Älykäs yhteenveto

Perintö sisään Java on mekanismi, jossa yksi luokka hankkii toisen luokan kentät ja metodit extends-avainsanan avulla. Se edistää koodin uudelleenkäytettävyyttä ja mallintaa Is-A-suhdetta yliluokan ja sen alaluokkien välillä.

  • 🧬 Perintö määriteltynä: Yksi luokka hankkii toisen luokan kentät ja metodit käyttämällä extend-lauseketta.
  • 👨👩👧 Onko suhde?: Mallintaa pääluokan (superluokan) ja aliluokan (aliluokan) hierarkiaa.
  • 🗂️ Viisi tyyppiä: Yksittäinen, monitasoinen, hierarkkinen ja hybridiperintä.
  • 🚫 Java rajoitus: Java ei tue moninkertaista tai hybridiperintää luokkien kautta.
  • 🔑 Superavainsana: Käyttää yläluokan muuttujia, metodeja ja konstruktoreita alikategoriasta.
  • Hyöty: Käyttää testattua koodia uudelleen ja lisää ominaisuuksia uusien luokkien kautta muokkaamatta olemassa olevia.

Perintö sisään Java

Mikä on perintö?

Perintö on mekanismi, jossa yksi luokka hankkii toisen luokan ominaisuuden. Esimerkiksi lapsi perii vanhempiensa piirteet. Perinnön avulla voimme käyttää uudelleen olemassa olevan luokan kenttiä ja menetelmiä. Näin ollen perinnöllisyys helpottaa uudelleenkäytettävyyttä ja on tärkeä OOP-käsite.

Mitä perintö sisältää Java?

Java Perintö on mekanismi, jossa yksi luokka hankkii toisen luokan ominaisuuden. sisään Java, kun "Is-A" -suhde on olemassa kahden luokan välillä, käytämme periytymistä. Pääluokkaa kutsutaan superluokiksi ja perittyä luokkaa alaluokiksi. avainsana extends alaluokka käyttää sitä superluokan ominaisuuksien perimiseksi. Periytys on tärkeää, koska se johtaa koodin uudelleenkäytettävyyteen.

Java Perinnön syntaksi:

class subClass extends superClass
{
   //methods and fields
}

Perinnön tyypit Java

Tässä on erityyppisiä perintöjä Java:

  1. Yksi perintö
  2. Moninkertainen perintö
  3. Monitasoinen perintö
  4. Hierarkkinen perintö
  5. Hybridi perintö

1. Yksittäinen perintö:

Yksittäisessä perinnössä yksi luokka laajentaa toista luokkaa (vain yksi luokka).

Yksittäinen perintö sisään Java
Yksi perintö

Yllä olevassa kaaviossa luokka B laajentaa vain luokkaa A. Luokka A on superluokka ja luokka B on alaluokka.

2. Moniperintö:

Moniperintö on yksi perinnöistä Java tyypit, joissa yksi luokka ulottuu useampaan kuin yhteen luokkaan. Java ei tue moniperintöä.

Moniperintö sisään Java

Java Moninkertainen perintö

Yllä olevan kaavion mukaisesti luokka C laajentaa sekä luokan A että luokan B.

3. Monitasoinen perintö:

Monitasoperinnössä yksi luokka voi periä johdetusta luokasta. Tästä syystä johdetusta luokasta tulee uuden luokan perusluokka.

Monitasoinen perintö sisään Java

Monitasoinen perintö

Kuten kaaviossa näkyy, luokka C on B:n alaluokka ja B on luokan A alaluokka.

4. Hierarkkinen periytyminen:

Hierarkkisessa perinnössä yksi luokka periytyy useiden alaluokkien toimesta.


Hierarkkinen perintö sisään Java

Hierarkkinen perintö

Kuten yllä olevassa esimerkissä, luokka B, C ja D perivät saman luokan A.

5. Hybridiperintö:

Hybridiperintö on yksi perinnöllisistä tyypeistä Java joka on yhden ja moninkertaisen perinnön yhdistelmä.


Hybridi perintö

Hybridi perintö

Kuten yllä olevassa esimerkissä, kaikki A-luokan julkiset ja suojatut jäsenet peritään luokkaan D, ensin luokan B kautta ja toiseksi luokan C kautta.

Huomautus: Java ei tue hybridi/moniperintöä

Perintö sisään Java esimerkki

Tässä on esimerkki perinnöllisyydestä Java:


Esimerkki Java Perintö

Java Esimerkki perinnöstä

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

Super avainsana

Super-avainsana on samanlainen kuin "tämä" avainsana. Avainsanalla super voidaan käyttää mitä tahansa pääluokan datajäsentä tai menetelmiä. Super-avainsanaa voidaan käyttää osoitteessa muuttuja, menetelmä ja rakentajataso.

Syntaksi:

super.<method-name>();

Tarkista myös: - tämä avainsana Java: Mikä on ja kuinka sitä käytetään esimerkin kanssa

Opi periytymistä OOP:issa esimerkin avulla

Harkitse samaa pankkisovellusta edellinen esimerkki.

Meidän on tarkoitus avata kaksi erilaista tilityyppiä, yksi säästämistä ja toinen tarkistusta varten (tunnetaan myös nimellä nykyinen).

Perintö OOP:ssa

Verrataan ja tutkitaan kuinka voimme lähestyä koodausta a jäsennelty ja olio-ohjelmointinäkökulma.

Rakenteellinen lähestymistapa: Rakenteisessa ohjelmoinnissa luomme kaksi funktiota –

  1. Yksi vetäytyä
  2. Ja toinen talletustoimintaa varten.

Koska näiden toimintojen toiminta pysyy samana kaikissa tileissä.

Perintö OOP:ssa

OOP:n lähestymistapa: Kun käytät Oho ohjelmointi lähestymistapaa. Luomme kaksi luokkaa.

  • Jokaisella on talletus- ja nostotoimintojen toteuttaminen.
  • Tämä aiheuttaa ylimääräistä työtä.

Perintö OOP:ssa

Muutospyyntö ohjelmistossa

Nyt ohjelmistoalalla niin yleisen vaatimuksen määrittelyssä on tapahtunut muutos. Sinun pitäisi lisätä toiminnallinen etuoikeutettu pankkitili tilinylitysmahdollisuudella. Taustaa varten tilinylitys on ominaisuus, jossa voit nostaa enemmän kuin tilisi saldoa.

Muutospyyntö ohjelmistossa

Rakenteellinen lähestymistapa: Käyttäen toiminnallista lähestymistapaa, minun on muutettava vetäytymistoimintoani, joka on jo testattu ja perusteltu. Ja lisää alla olevan kaltainen menetelmä huolehtii uusista vaatimuksista.

Muutospyyntö ohjelmistossa

OOP:n lähestymistapa: OOP:n lähestymistapaa käyttämällä sinun tarvitsee vain kirjoittaa uusi luokka ainutlaatuisella vetäytymisfunktion toteutuksella. Emme koskaan koskeneet testattuun koodiin.

Muutospyyntö ohjelmistossa

Toinen muutospyyntö

Entä jos vaatimus muuttuu edelleen? Haluan lisätä luottokorttitilin, jolla on oma ainutlaatuinen talletusvaatimus.

Useita muutospyyntöjä ohjelmistovaatimuksessa

Rakenteellinen lähestymistapa: Rakenteellista lähestymistapaa käyttämällä sinun on vaihdettava testattu talletuskoodi uudelleen.

Rakenteellinen lähestymistapa useisiin ohjelmistomuutospyyntöihin

OOP:n lähestymistapa: Mutta olio-ohjelmointia käytettäessä luot vain uuden luokan, jossa on sen ainutlaatuinen talletusmetodin toteutus (korostettu punaisella alla olevassa kuvassa). Joten vaikka rakenteellinen ohjelmointi vaikuttaa aluksi helpolta lähestymistavalta, olio-ohjelmointi voittaa pitkällä aikavälillä.

OOP:n lähestymistapa useisiin muutospyyntöihin

Perinnön edut OOP:issa

Mutta voidaan väittää, että kaikissa luokissa sinulla on toistuvia koodinpätkiä.

Voit voittaa tämän luomalla yläluokan, sanomalla "tili" ja toteuttamalla saman talletus- ja kotiutustoiminnon. Ja tee lapsiluokista peritty "tililuokka". Jotta heillä on pääsy tililuokassa nosto- ja talletustoimintoihin. Toimintoja ei tarvitse toteuttaa yksittäin. Tämä on Periytys javassa. .

Perinnön edut OOP:issa

Perinnön edut OOP:issa

UKK

Java välttää luokkien moninkertaista periytymistä estääkseen "timanttiongelman", jossa kääntäjä ei voi päättää, mitä perittyä metodia käyttää. Sen sijaan, Java antaa luokan toteuttaa useita rajapintoja samanlaisen joustavuuden saavuttamiseksi turvallisesti.

Avainsana this viittaa nykyiseen objektiin ja sen jäseniin, kun taas avainsana super viittaa välittömään yläluokkaan. Avainsanalla super voit kutsua yläluokan muuttujia, metodeja tai konstruktoria alikuvasta.

Perintä mallintaa "Is-A"-suhdetta, jossa aliluokka laajentaa pääluokkaa. Kompositio mallintaa "Has-A"-suhdetta, jossa luokka sisältää muita objekteja. Kompositio on usein joustavampaa ja sitä suositaan löyhästi kytketyissä malleissa.

Tekoäly voi analysoida luokkien vastuita, ehdottaa jaettuja perusluokkia, suositella rajapintoja syvän periytymisen kautta ja merkitä päällekkäistä koodia, auttaaping kehittäjät rakentavat selkeitä, uudelleenkäytettäviä hierarkioita, jotka noudattavat oliopohjaisen suunnittelun periaatteita.

Kyllä. Tekoälyavusteinen staattinen analyysi voi mitata periytymissyvyyttä, merkitä hauraita tai liian sisäkkäisiä hierarkioita ja ehdottaa uudelleenjärjestelyjä sommittelun tai rajapintojen suhteen ylläpidettävyyden parantamiseksi ja tiukan kytkennän vähentämiseksi.

Tiivistä tämä viesti seuraavasti: