Edellytys: Perintö Pythonissa
Metodin ohitus on minkä tahansa olio-ohjelmointikielen kyky, jonka avulla alaluokka tai alaluokka voi tarjota tietyn menetelmän toteutuksen, jonka jokin sen superluokista tai yläluokista jo tarjoaa. Kun aliluokan menetelmällä on sama nimi, samat parametrit tai allekirjoitus ja sama palautustyyppi (tai alatyyppi) kuin menetelmällä sen superluokassa, niin alaluokan menetelmän sanotaan olevan ohittaa menetelmä superluokassa.

Suoritettavan menetelmän versio määräytyy sen kutsumiseen käytetyn objektin mukaan. Jos menetelmän kutsumiseen käytetään pääluokan objektia, suoritetaan yläluokan versio, mutta jos aliluokan objektia käytetään menetelmän kutsumiseen, suoritetaan aliluokan versio. Toisin sanoen kohteen, johon viitataan, tyyppi (ei viitemuuttujan tyyppi) määrittää, mikä ohitetun menetelmän versio suoritetaan.
Esimerkki:
# Python program to demonstrate> # method overriding> > > # Defining parent class> class> Parent():> > ># Constructor> >def> __init__(>self>):> >self>.value>=> 'Inside Parent'> > ># Parent's show method> >def> show(>self>):> >print>(>self>.value)> > # Defining child class> class> Child(Parent):> > ># Constructor> >def> __init__(>self>):> >self>.value>=> 'Inside Child'> > ># Child's show method> >def> show(>self>):> >print>(>self>.value)> > > # Driver's code> obj1>=> Parent()> obj2>=> Child()> > obj1.show()> obj2.show()> |
>
>
Lähtö:
Inside Parent Inside Child>
Menetelmän ohittaminen moni- ja monitasoisella perinnöllä
- Moniperintö: Kun luokka on johdettu useammasta kuin yhdestä perusluokasta, sitä kutsutaan moniperinnöksi.
Esimerkki: Tarkastellaan esimerkkiä, jossa haluamme ohittaa vain yhden yläluokan menetelmän. Alla toteutus.
mukautettu poikkeus javassa
# Python program to demonstrate># overriding in multiple inheritance>>># Defining parent class 1>class>Parent1():>>># Parent's show method>>def>show(>self>):>>print>(>'Inside Parent1'>)>># Defining Parent class 2>class>Parent2():>>># Parent's show method>>def>display(>self>):>>print>(>'Inside Parent2'>)>>># Defining child class>class>Child(Parent1, Parent2):>>># Child's show method>>def>show(>self>):>>print>(>'Inside Child'>)>>># Driver's code>obj>=>Child()>>obj.show()>obj.display()>>
>
Lähtö:
Inside Child Inside Parent2>
Monitasoinen perintö: Kun meillä on lapsi- ja lapsenlapsisuhde.Esimerkki: Tarkastellaan esimerkkiä, jossa haluamme ohittaa vain yhden menetelmän yhdestä sen pääluokasta. Alla toteutus.
# Python program to demonstrate># overriding in multilevel inheritance>>># Python program to demonstrate># overriding in multilevel inheritance>>>class>Parent():>>># Parent's show method>>def>display(>self>):>>print>(>'Inside Parent'>)>>># Inherited or Sub class (Note Parent in bracket)>class>Child(Parent):>>># Child's show method>>def>show(>self>):>>print>(>'Inside Child'>)>># Inherited or Sub class (Note Child in bracket)>class>GrandChild(Child):>>># Child's show method>>def>show(>self>):>>print>(>'Inside GrandChild'>)>># Driver code>g>=>GrandChild()>g.show()>g.display()>>
>
Lähtö:
Inside GrandChild Inside Parent>
Vanhemman menetelmän kutsuminen ohitetun menetelmän sisällä
Pääluokan menetelmiä voidaan kutsua myös ohitettujen menetelmien sisällä. Tämä voidaan yleensä saavuttaa kahdella tavalla.
- Luokan nimen käyttäminen: Vanhemman luokkametodeja voidaan kutsua käyttämällä Parent
classname.method>ohitetun menetelmän sisällä.Esimerkki:
alkuluku java
# Python program to demonstrate> # calling the parent's class method> # inside the overridden method> > > class> Parent():> > >def> show(>self>):> >print>(>'Inside Parent'>)> > class> Child(Parent):> > >def> show(>self>):> > ># Calling the parent's class> ># method> >Parent.show(>self>)> >print>(>'Inside Child'>)> > # Driver's code> obj>=> Child()> obj.show()> |
>
>
Lähtö:
Inside Parent Inside Child>Super(): Pythonin käyttö
super()>funktio tarjoaa meille mahdollisuuden viitata emoluokkaan eksplisiittisesti. Se on periaatteessa hyödyllinen silloin, kun meidän on kutsuttava superluokkafunktioita. Se palauttaa välityspalvelinobjektin, jonka avulla voimme viitata yläluokkaan 'super'.Esimerkki 1:
# Python program to demonstrate> # calling the parent's class method> # inside the overridden method using> # super()> > > class> Parent():> > >def> show(>self>):> >print>(>'Inside Parent'>)> > class> Child(Parent):> > >def> show(>self>):> > ># Calling the parent's class> ># method> >super>().show()> >print>(>'Inside Child'>)> > # Driver's code> obj>=> Child()> obj.show()> |
>
mb to gb
>
Lähtö:
Inside Parent Inside Child>
Esimerkki 2:
# Program to define the use of super()> # function in multiple inheritance> class> GFG1:> >def> __init__(>self>):> >print>(>'HEY !!!!!! GfG I am initialised(Class GEG1)'>)> > >def> sub_GFG(>self>, b):> >print>(>'Printing from class GFG1:'>, b)> > # class GFG2 inherits the GFG1> class> GFG2(GFG1):> >def> __init__(>self>):> >print>(>'HEY !!!!!! GfG I am initialised(Class GEG2)'>)> >super>().__init__()> > >def> sub_GFG(>self>, b):> >print>(>'Printing from class GFG2:'>, b)> >super>().sub_GFG(b>+> 1>)> > # class GFG3 inherits the GFG1 ang GFG2 both> class> GFG3(GFG2):> >def> __init__(>self>):> >print>(>'HEY !!!!!! GfG I am initialised(Class GEG3)'>)> >super>().__init__()> > >def> sub_GFG(>self>, b):> >print>(>'Printing from class GFG3:'>, b)> >super>().sub_GFG(b>+> 1>)> > > # main function> if> __name__>=>=> '__main__'>:> > ># created the object gfg> >gfg>=> GFG3()> > ># calling the function sub_GFG3() from class GHG3> ># which inherits both GFG1 and GFG2 classes> >gfg.sub_GFG(>10>)> |
>
>
Lähtö:
HEY !!!!!! GfG I am initialised(Class GEG3) HEY !!!!!! GfG I am initialised(Class GEG2) HEY !!!!!! GfG I am initialised(Class GEG1) Printing from class GFG3: 10 Printing from class GFG2: 11 Printing from class GFG1: 12>