logo

Super raktinis žodis Java

The super raktinis žodis Java yra nuorodos kintamasis, kuris naudojamas nurodyti pirminę klasę, kai dirbame su objektais. Jūs turite žinoti pagrindus Paveldėjimas ir Polimorfizmas suprasti Java super raktinį žodį.

Raktinis žodis super atėjo į paveikslą su paveldėjimo sąvoka. Šiame straipsnyje apžvelgsime viską apie super Java, įskaitant apibrėžimus, pavyzdžius, naudojimo būdus, sintaksę ir dar daugiau.

Turinys



Super Keyword charakteristikos Java

„Java“ kalboje super raktinis žodis naudojamas nurodant pirminę poklasio klasę. Štai keletas pagrindinių jo savybių:

  • super naudojamas superklasės konstruktoriui vadinti: Kai sukuriamas poklasis, jo konstruktorius turi iškviesti pirminės klasės konstruktorių. Tai atliekama naudojant raktinį žodį super(), kuris iškviečia pirminės klasės konstruktorių.
  • super naudojamas superklasės metodui iškviesti: Poklasis gali iškviesti metodą, apibrėžtą pirminėje klasėje, naudodamas super raktinį žodį. Tai naudinga, kai poklasis nori iškviesti ne tik savo, bet ir pagrindinės klasės metodo įgyvendinimą.
  • super naudojamas norint pasiekti superklasės lauką: Poklasis gali pasiekti lauką, apibrėžtą pirminėje klasėje, naudodamas super raktinį žodį. Tai naudinga, kai poklasis nori nurodyti pirminės klasės lauko versiją.
  • super turi būti pirmasis konstruktoriaus teiginys: Iškviečiant superklasės konstruktorių, sakinys super() turi būti pirmasis poklasio konstruktoriaus sakinys.
  • super negalima naudoti statiniame kontekste: „Super“ raktinio žodžio negalima naudoti statiniame kontekste, pvz., naudojant statinį metodą arba statinio kintamojo inicijavimo priemonę.
  • Super nereikia iškviesti superklasės metodo: Nors galima naudoti super raktinį žodį, norint iškviesti metodą pagrindinėje klasėje, tai nėra būtina. Jei poklasyje metodas nepaisomas, jį iškvietus be super raktinio žodžio, bus iškviestas pagrindinės klasės įgyvendinimas.

Apskritai, super raktažodis yra galingas „Java“ subklasių įrankis, leidžiantis poklasiams paveldėti ir remtis savo pirminių klasių funkcionalumu.

Super raktinio žodžio naudojimas Java

Jis dažniausiai naudojamas toliau nurodytose situacijose:

  • Super naudojimas su kintamaisiais
  • Super naudojimas su metodais
  • Super naudojimas su konstruktoriais

1. Super naudojimas su kintamaisiais

Šis scenarijus įvyksta, kai išvestinėje klasėje ir bazinėje klasėje yra tie patys duomenų nariai. Tokiu atveju yra dviprasmiškumo tikimybė JVM .

Mes galime tai aiškiau suprasti naudodami šį pavyzdį:

Pavyzdys

Java




// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }>

>

>

Išvestis

Maximum Speed: 120>

Aukščiau pateiktame pavyzdyje tiek pagrindinė klasė, tiek poklasis turi narį maxSpeed. Naudodami super raktinį žodį, galėtume pasiekti poklasio bazinės klasės maxSpeed.

2. Super naudojimas su metodais

Tai naudojama, kai norime iškviesti pirminę klasę metodas . Taigi, kai tėvų ir vaikų klasė turi tuos pačius pavadinimus, tada, norėdami išspręsti dviprasmybę, naudojame super raktinį žodį.

Šis kodo fragmentas padeda suprasti minėtą super raktinio žodžio naudojimą.

Pavyzdys

Java




// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class '>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }>

>

>

Išvestis

This is student class This is person class>

Aukščiau pateiktame pavyzdyje matėme, kad jei iškviečiame tik metodą žinutė () tada iškviečiamas dabartinis klasės pranešimas(), bet naudojant super raktinį žodį, žinutė () taip pat galima remtis superklase.

3. Super naudojimas su konstruktoriais

Super raktinis žodis taip pat gali būti naudojamas norint pasiekti pirminės klasės konstruktorių. Dar vienas svarbus dalykas yra tai, kad „super“ gali vadinti ir parametrinius, ir neparametrinius konstruktorius, priklausomai nuo situacijos.

Toliau pateikiamas kodo fragmentas, paaiškinantis pirmiau minėtą sąvoką:

1 pavyzdys

Java


lentynų šunys



// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }>

>

>

Išvestis

Person class Constructor Student class Constructor>

Aukščiau pateiktame pavyzdyje superklasės konstruktorių iškvietėme naudodami raktinį žodį „super“ per poklasio konstruktorių.

2 pavyzdys

Java




class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }>

>

>

Išvestis

false>

„Java Super Keyword“ naudojimo pranašumai

The super raktinis žodis Java suteikia daug objektinio programavimo pranašumų:

  • Leidžia pakartotinai naudoti kodą : naudojant super raktinį žodį, poklasiai gali paveldėti funkcijas iš pirminių klasių, o tai skatina pakartotinį kodo naudojimą ir sumažina dubliavimą.
  • Palaiko polimorfizmą : Kadangi poklasiai gali nepaisyti metodų ir prieigos laukų iš savo pirminių klasių naudodami super, galimas polimorfizmas. Tai leidžia sukurti lankstesnį ir išplečiamesnį kodą.
  • Suteikia prieigą prie tėvų klasės elgesio : Poklasiai gali pasiekti ir naudoti metodus ir laukus, apibrėžtus savo pagrindinėse klasėse, naudodami super raktinį žodį, o tai leidžia jiems pasinaudoti esama elgsena, nereikia jos pakartotinai įdiegti.
  • Leidžia pritaikyti elgesį: Nepaisydami metodų ir naudodami super iškviesti pirminį diegimą, poklasiai gali tinkinti ir išplėsti savo pirminių klasių elgesį.
  • Palengvina abstrakciją ir inkapsuliavimą: Super naudojimas skatina inkapsuliavimą ir abstrakciją, nes leidžia poklasiams sutelkti dėmesį į savo elgesį ir pasikliauti pagrindine klase, kuri tvarko žemesnio lygio detales.

Apskritai super raktinis žodis yra pagrindinė funkcija paveldėjimo ir polimorfizmas „Java“ versijoje ir suteikia keletą privalumų kūrėjams, norintiems rašyti daugkartinį, išplečiamą ir gerai organizuotą kodą.

Svarbūs dalykai, kuriuos reikia atsiminti naudojant „Java Super Keyword“.

Štai keletas svarbių dalykų, į kuriuos turite pasirūpinti naudodami super raktinius žodžius Java:

  • Super() skambutis turi būti pirmasis išvestinės (studentų) klasės teiginys konstruktorius nes jei pagalvoji apie tai, prasminga, kad superklasė neturi žinių apie jokį poklasį, todėl bet kokia iniciacija, kurią jai reikia atlikti, yra atskirta nuo bet kokios poklasio atliekamos iniciacijos ir galbūt būtina sąlyga. Todėl pirmiausia reikia užbaigti jo vykdymą.
  • Jei konstruktorius aiškiai neiškviečia superklasės konstruktoriaus, „Java“ kompiliatorius automatiškai įterpia iškvietimą į beargumentinį superklasės konstruktorių. Jei superklasėje nėra beargumentinio konstruktoriaus, gausite kompiliavimo laiko klaidą. Objektas daro turėti tokį konstruktorių, taigi, jei objektas yra vienintelė superklasė, problemų nėra.

super raktinis žodis Java

  • Jei poklasio konstruktorius tiesiogiai arba netiesiogiai iškviečia savo superklasės konstruktorių, galite manyti, kad iškviečiama visa konstruktorių grandinė, iki pat objekto konstruktoriaus. Iš tikrųjų taip ir yra. Tai vadinama konstruktorių grandinės .

DUK – Java super raktinis žodis

Q1. Kas yra super () ir super raktinis žodis Java?

Super() yra Java raktinis žodis, naudojamas superklasės konstruktoriui iškviesti. Super pasiekia superklasės narius ir palaiko paveldėjimo hierarchijas.

Q2. Kuri yra „Java“ super klasė?

The Objektų klasė dar žinoma kaip super klasė yra klasės hierarchijos viršuje Java java.lang paketas . Kiekviena klasė, nesvarbu, ar iš anksto nustatyta, ar apibrėžta vartotojo, yra Object klasės poklasis.

Q3. Kodėl „Java“ yra labai svarbus?

super yra labai svarbus Java, nes palengvina prieigą, inicijavimą ir ryšių tarp superklasių ir poklasių valdymą, taip skatinant kodo pakartotinį naudojimą.