java override method overriding
V tej vadnici je razloženo, kako doseči polimorfizem med izvajanjem v Javi z uporabo metode Overriding in anotacijo @override s preprostimi primeri:
Podrobno smo že razpravljali o konceptu polimorfizma in polimorfizmu v času prevajanja. V tej vadnici bomo nadaljevali s polimorfizmom Runtime v Javi.
V nasprotju s polimorfizmom časa prevajanja, pri katerem se klic metode razreši v času prevajanja, se pri polimorfizmu med izvajanjem klic metode razreši med izvajanjem.
=> Tukaj preverite VSE Vadnice za Java.
Kaj se boste naučili:
- Polimorfizem med izvajanjem v Javi
- Pripis @override v Javi
- Preobremenitev in preglasitev v Javi
- Zaključek
Polimorfizem med izvajanjem v Javi
Izvajalni polimorfizem, znan tudi pod imenom dinamični polimorfizem ali Pošiljanje dinamične metode je tehnika, pri kateri se razveljavljeni klic metode dinamično reši med izvajanjem.
Polimorfizem med izvajanjem v Javi je dosežen z uporabo ' preglasitev metode '. Preglasitev metode je tehnika, s katero je metoda v nadrejenem razredu na novo opredeljena ali razveljavljena v podrejenem razredu.
Ko je metoda razveljavljena v razredu, tehnika dinamične odpreme metode razreši klic prepisane metode med izvajanjem in ne v času prevajanja.
Doseči polimorfizem med izvajanjem v Javi - preglasitev metode
Preglasitev metode je pristop, ki ga uporabljamo za doseganje polimorfizma med izvajanjem v Javi. Kot smo že omenili, je preglasitev metode tehnika, pri kateri podrazred doda metodo, ki je že prisotna v nadrejenem razredu, in tej metodi doda novo funkcionalnost. Potem rečemo, da je metoda osnovnega razreda preglašena.
Nova metoda, ki smo jo opredelili v podrazredu z istim prototipom kot metoda nadrejenega razreda, vendar drugačna izvedba, se imenuje » preglasitvena metoda ' . Metoda v nadrejenem razredu je znana kot „ Preglašena metoda '.
kako narediti navzkrižno brskalnik
Ko je metoda razveljavljena, ostaja vprašanje, kako je razrešen klic te nadomeščene metode?
Običajno preklicano metodo pokličemo prek reference osnovnega razreda. Ustvarili bomo referenco tipa base in nato z novo ključno besedo dodelili objekt podrejenega razreda.
Tako je odvisno od vsebine referenčne spremenljivke ali od tega, na kateri objekt se sklicuje referenca osnovnega razreda, ki določa, katero metodo je treba poklicati. Torej, če referenčni predmeti kažejo na objekt podrejenega razreda, se pokliče metoda preglasitve.
V nasprotnem primeru, če referenčni objekt vsebuje predmet osnovnega razreda, se pokliče nadomeščena metoda. Tema, ki jo moramo biti jasni pri polimorfizmu med izvajanjem, zlasti pri pošiljanju dinamičnih metod, je 'Upcasting', ki je razložena spodaj.
Upcasting
Ko referenčni objekt nadrejenega razreda, o katerem smo razpravljali zgoraj, kaže na predmet podrazreda ali se nanj sklicuje, ga imenujemo Upcasting.
Razumimo upcasting na preprostem primeru.
Upoštevajte, da imamo razred 'BaseClass' in ta BaseClass razširimo, da ustvarimo nov razred DerivedClass. Ta struktura je videti, kot je prikazano spodaj.
class BaseClass { ….//BaseClass code here } class DerivedClass extends BaseClass{ ….//DerivedClass code here }
Zdaj za izvedbo upcastinga bomo razglasili referenčno spremenljivko tipa BaseClass. Nato dodelimo objekt DerivedClass sklicu razreda BaseClass, kot je to storjeno v spodnjem stavku kode.
BaseClass base = new DerivedClass (); //Upcasting
Tu lahko rečemo, da smo objekt DerivedClass nadgradili na BaseClass. Kar zadeva polimorfizem med izvajanjem, je koncept posodabljanja zelo pomemben.
Tako je na splošno posodabljanje postopek dodeljevanja predmetov podrejenega ali podrazreda referenci nadrejenega ali nadrazrednega razreda.
SuperClass reference = new Subclass Object;
Spodnji program Java prikazuje preglasitev metode in tudi, kako se izvaja posodobitev, da se rešijo preglasovani klici metode med izvajanjem.
//base/parent class class Parent { void Print() //print method { System.out.println('Parent::Print() method'); } } //child class 1 inheriting from Parent class child1 extends Parent { void Print() //overridden print method { System.out.println('child1::Print() method'); } } //child class 2 inheriting from Parent class child2 extends Parent { void Print() //overridden print method { System.out.println('child2::Print() method'); } } class Main { public static void main(String() args) { Parent parent = new Parent(); parent.Print(); //executes parent Print () method parent = new child1(); //upcasting parent.Print(); //executes child1 Print () method parent = new child2(); //upcasting parent.Print(); //executes child2 Print () method
Izhod:
V zgornjem programu imamo dva razreda, tj. Child1 in Child2, ki izhajata iz razreda 'Starš'. Nadrejeni razred ima metodo „Natisni“, ki je razveljavljena tako v razredih Child1 in Child2. Nato v glavni metodi ustvarimo referenčni objekt razreda Nadrejeni z imenom 'nadrejeni'.
Najprej mu dodelimo objekt razreda Starš in nato pokličemo metodo »Print ()«. Nato to ponovimo tako, da najprej dodamo objekt child1 in nato objekt child2 referenci Starš.
sql vprašanja in odgovori za izkušene pdf
Izhod se prikaže, odvisno od vsebine nadrejenega sklica, in poklican je ustrezen način tiskanja.
Prednosti dinamičnega / izvajalnega polimorfizma
- Z dinamičnim polimorfizmom lahko programer preglasi metode.
- Razredom omogoča, da opredelijo metodo s splošno izvedbo, ki jo njeni derivati lahko nato preglasijo in zagotovijo posebno izvedbo.
- Z dinamično odpremo metode se klic metode razreši med izvajanjem, za razliko od preobremenitve, ki se odloči med prevajanjem. To programerjem omogoča večjo prilagodljivost.
Ker polimorfizem med izvajanjem na klic v času izvajanja veže ustrezno metodo in jo tudi pokličemo dinamična vezava ali pozna vezava . Komplikovalni polimorfizem na drugi strani podpira statična vezava ali zgodnja vezava .
Statična vs dinamična vezava
Statična vezava | Dinamična vezava |
---|---|
Klic metode, razrešen v času prevajanja, je statična vezava. | Klic metode, razrešen med izvajanjem, je dinamična vezava. |
Preobremenitev metode je primer statične vezave. | Preglasitev metode je primer dinamične vezave. |
Tipi razredov in polj se uporabljajo za statično vezavo. | Predmeti se uporabljajo za dinamično vezavo. |
Zasebne, končne in statične entitete uporabljajo statično vezavo. | Navidezne metode uporabljajo dinamično vezavo. |
Navidezna funkcija / metoda v Javi
Navidezna funkcija ali metoda v Javi je funkcija, ki se uporablja pri polimorfizmu med izvajanjem. Za razliko od C ++, Java nima posebne 'virtualne' ključne besede označuje, da je metoda navidezna. Metoda, ki je definirana v osnovnem razredu in razveljavljena v izpeljanem razredu, je navidezna.
V Javi je privzeto vsaka nestatična metoda, razen zasebne in končne, navidezna funkcija. Upoštevajte torej, da so metode, ki smo jih obravnavali zgoraj, prednostne za izvajanje polimorfizma med izvajanjem, tudi virtualne metode.
Ker je statična metoda vezana na razred in je ni mogoče poklicati z uporabo predmeta, je ni mogoče uporabiti s polimorfizmom med izvajanjem in tudi ni navidezna funkcija.
Vmesniki v Javi so privzeto navidezni. Razredi, ki izvajajo vmesnike, ponujajo izvedbe vmesniških metod. Tako kot pri polimorfizmu med izvajanjem se tudi med izvajanjem razrešijo metode klica vmesnika.
Ne pozabite, da ker so metode v vmesniku zasnovane tako, da jih preglasijo, so vse metode vmesnika navidezne funkcije.
Upoštevajte na primer naslednjo kodo:
interface car{ void accelerate(); } class Maruti implements car{ void accelerate () { System.out.println(“Maruti car accelerated!!”); } }
V zgornji kodi je metoda accelerate () navidezna funkcija, saj je del vmesniškega avtomobila in je zasnovana tako, da jo preglasi.
Pripis @override v Javi
Pripis @override je privzeti pripis v Javi. Ta pripis je bil uveden v Javi 1.5. Pripis @override se uporablja, kadar metoda podrazreda preglasi svojo metodo superrazreda.
Z uporabo pripisa Java @override, ki označuje, da metoda prevlada nad nadrejeno metodo razreda, prevajalnik izda opozorilo, če pripisana metoda ni razveljavljena. Zaradi tega je obvezno, da se metoda preglasi, ko se uporablja pripis @override.
Drugič, z uporabo pripisa @override naredimo kodo bolj berljivo. Takoj lahko ugotovimo, da je treba razglasiti metodo, ki jo razglasimo.
Splošna sintaksa pripisa Java @override je
public @interface override
Spodnji program Java prikazuje uporabo pripisa @override.
//base class definition class BaseClass { public void display() { System.out.println('BaseClass::display () method'); } } //derived class inheriting base class class DerivedClass extends BaseClass { @Override //indicates the display method being overridden public void display() { System.out.println('DerivedClass::display () method'); } } // main class public class Main { public static void main(String args()) { System.out.println('@Override Example'); //BaseClass type object;contain child object BaseClass testObj = new DerivedClass(); //call display method based on contents of object i.e. derived class display () testObj.display(); } }
Izhod:
V zgornjem programu imamo BaseClass, ki definira način prikaza. Nato iz tega osnovnega razreda izpeljemo razred DerivedClass in označimo način prikaza s pripisom @override. Ta metoda je razveljavljena v razredu DerivedClass.
V glavni metodi ustvarimo referenco predmeta BaseClass in jo usmerimo na objekt DerivedClass, zaradi česar sklic pokliče prikazno metodo DerivedClass.
Če ne bi izvedli metode display () v razredu Izvedeno, bi prevajalnik opozoril prevajalnika, saj je označen s pripisom @override.
Preobremenitev in preglasitev v Javi
Zdaj, ko smo razpravljali o preobremenitvi in preglasitvi v Javi, povzemimo ta dva koncepta.
Preobremenitev je povezana s polimorfizmom časa prevajanja, to pomeni, da izvajamo polimorfizem časa prevajanja z uporabo preobremenitve. Preobremenitev se izvede na dva načina, to je preobremenitev metode in preobremenitev operaterja.
Preobremenitev metode je tehnika, pri kateri imamo več metod z istim imenom, vendar z različnimi seznami parametrov. Seznam parametrov se razlikuje glede na število parametrov, vrste parametrov ali zaporedje parametrov.
dvojno povezan razred c ++
Preobremenitev operaterja v Javi je omejena in nam omogoča, da preobremenimo samo operator +, ki se uporablja za dodajanje dveh številk in združevanje dveh nizov.
Preobremenitev je rešena v času prevajanja in je statična. Imenuje se tudi „Zgodnja vezava“ .
Preglasitev metode je funkcija, s katero izvajamo polimorfizem med izvajanjem. Pri preglasitvi metode je nadrejena metoda nadrejenega razreda v podrejenem razredu. To pomeni, da prototip metode tako v super kot v podrazredu ostaja enak, vendar se izvedbe razlikujejo.
Preglasitev metode uporablja tehniko pošiljanja dinamične metode, da razreši klic metode in se odloči, ali naj pokliče metodo superrazreda ali podrazreda, kar se naredi med izvajanjem.
Zato se polimorfizem med izvajanjem imenuje tudi dinamični polimorfizem ali pozna vezava.
Nato razčlemimo razlike med preobremenitvijo in preglasitvijo v Javi.
Preobremenitev vs Preglasitev v Javi
Preobremenitev | Preglasitev |
---|---|
Preobremenitev se uporablja v polimorfizmu časa prevajanja. | Preglasitev se izvaja v polimorfizmu med izvajanjem. |
Lahko v istem razredu. Dedovanje lahko zahteva ali ne. | Preglasitev vedno zahteva dedovanje. |
Metode so preobremenjene z istim imenom metode in različnim seznamom parametrov. | Razveljavljene metode imajo enake prototipe. |
Vrsta vrnitve se ne upošteva pri preobremenitvi metode. | Vrnjeni tip mora biti enak pri razveljavljenih in preglasitvenih metodah. |
Izboljša berljivost programa. | Preglasitev omogoča pametno izvajanje določenega razreda izvedbe. |
Pogosto zastavljena vprašanja
V # 1) Ali lahko preglasimo statično metodo?
Odgovor: Ne. Statičnih metod v Javi ni mogoče preglasiti. To je zato, ker statične metode temeljijo na razredu in jih razred neposredno pokliče. Ne potrebujejo predmetov, ki jih lahko prikličejo med izvajanjem. Zato pošiljanje statične metode določi prevajalnik.
V # 2) Ali lahko preglasimo konstruktor?
Odgovor: Ne, ne moremo preglasiti konstruktorja. Ko je objekt ustvarjen, se pokliče konstruktor. Ne imenuje se objekt. Ena od zahtev za razveljavitev je nadrejena metoda in metoda razveljavitve mora imeti enak podpis metode, kar v primeru konstruktorjev ni mogoče.
V # 3) Zakaj preglasitev metode imenujemo dinamični polimorfizem?
Odgovor: V primeru preglasitve metode se klic metode dinamično razreši med izvajanjem. Zato se imenuje dinamični polimorfizem.
V # 4) Kakšna je uporaba dinamičnega polimorfizma v Javi?
Odgovor: Dinamični polimorfizem uporablja tehniko pošiljanja dinamičnih metod, ki podpira preglasitev metode, tako da lahko podrazred zagotovi posebno izvedbo nadomeščene metode. Na ta način lahko uporabimo posebne funkcije, ki nam omogočajo pisanje učinkovitih programov.
Drugič, prav tako nam ni treba skrbeti za razreševanje klicev metode, saj se dinamična odprema metode odloči, katero metodo poklicati.
V # 5) Kakšna je razlika med statično in dinamično vezavo?
Odgovor: Povezava med klicem metode in njeno izvedbo se imenuje vezava. Ko je ta povezava razrešena v času prevajanja, jo imenujemo kot statična vezava. Ko se vezava izvaja dinamično v času izvajanja, jo imenujemo dinamična vezava.
Statična vezava uporablja podatkovni tip razreda in polj za razreševanje klicev metode. Dinamična vezava uporablja predmete za reševanje klicev metode. Statična vezava se imenuje tudi polimorfizem v času prevajanja, dinamična vezava pa tudi polimorfizem med izvajanjem.
Zaključek
V tej vadnici smo podrobno obravnavali polimorfizem med izvajanjem v Javi.
Polimorfizem med izvajanjem se izvaja z uporabo preglasitve metode. Preglasitev metode se izvede v podrazredu, pri čemer je metoda, določena v nadrazredu, na novo opredeljena ali razveljavljena v svojem podrazredu. Podpis metode ostane enak v super in podrazredu.
Z uporabo preglasitve metode lahko zagotovimo specifično izvedbo iste metode v podrazredu. Tako lahko napišemo učinkovitejše programe, ki vključujejo dedovanje. Java ponuja pripis @override, ki označuje, da je treba metodo preglasiti.
Privzeto so vse nestetične metode, ki niso dokončne, navidezne v Javi. Vse virtualne metode je mogoče preglasiti.
=> Tukaj bodite pozorni na preprosto serijo Java Training Training.
Priporočeno branje
- Preglasitev vnaprej določenih metod v Javi
- Dolžina niza Java () Metoda s primeri
- Kaj je polimorfizem v Javi - Vadnica s primeri
- Kako uporabiti metodo Java toString?
- Java String indexOf Method With Primeri kode
- Java String vsebuje () Vadnico metode s primeri
- Metoda Java String Split () - Kako razdeliti niz v Javi
- Java String compareTo Method s primeri programiranja