Bevezetés az OOP felülbírálásáról

Az öröklési koncepció oops-ben történő végrehajtása során az összes szülőosztály összes funkcióját az annak származtatott osztályai használják. De abban az esetben, ha egy származtatott osztály a szülőosztályban deklarált funkció speciális megvalósítását akarja, de ugyanazt a nevet, ugyanazt az aláírást és ugyanazt a visszatérési típust használja, akkor az elsőbbségi funkciót kell használni. A felülbírálás lehetővé teszi a gyermekosztály számára, hogy újradefiniálja a szülői osztályban vagy a szuperosztályban már meghatározott funkciót. Ilyen módon mindkét meghatározást felhasználhatjuk, ha meghatározzuk az osztály tárgyát, miközben meghívjuk a metódust. Például, létezzen egy összegfüggvény mind a szülő, mind a gyermek osztályban, és míg a függvény meghívásakor a gyermek osztály tárgyát használjuk, akkor a gyermek osztályban lévõ módszert hívjuk meg, és ha ehelyett szülõ osztályt használunk, akkor a jelenlegi módszer a szülő osztályban hívják. ez a módszer a gyermekosztályban állítólag felülírja a szuperosztályaiban alkalmazott módszert.

A módszer felülbírálása

Az alábbiakban bemutatjuk a felülbírálás módszereit:

  • A futásidejű polimorfizmus módszer felülbírálása elősegíti a futásidejű polimorfizmus elérését objektum-orientált programozási nyelveken, például c ++, java, c #, stb.
  • A polimorfizmus sokféle formát jelent, azaz egy aláírást és több definíciót. objektum-orientált nyelveken, amikor mind a származtatott, mind a szülő osztálynak azonos a neve és a függvény aláírása, akkor egyszerre a fordító feloldja a meghatározást, meg kell hívnia. A futásidejű polimorfizmus azt jelenti, hogy a metódusdefiníciónak az úgynevezett módszerhez történő kötődése a program futási idején történik. Ez lehetővé teszi a polimorfizmus „egy aláírás több meghatározása” aspektusának megvalósítását. Ez a szolgáltatás dinamikus módszer-disztribúciót használ, amelynek az objektum-orientált tervezés erőteljes koncepciója a kód újbóli felhasználása és robusztussága. Egy módszer felülbírálása lehetővé teszi a metódushívást bármely származtatott osztályba anélkül, hogy tudnánk a származtatott osztály objektumtípusát.
  • Ezzel a funkcióval speciális meghatározást lehet végrehajtani a szuperosztálytól örökölt általános funkcióhoz.

Hogyan működik az felülbírálás az OOP-kban?

Az alábbi magyarázat azt mondja, hogy az elsőbbség hogyan működik:

  • OOP, segítsen bennünket a futásidejű polimorfizmus megvalósításában, miközben az osztály jellemzőit egy másikba örökli. Vessen egy pillantást az OOP-ok felülbírálásának működésére. Később tegyük fel, hogy van egy szuperosztályú állatunk, amelynek két funkciója van: beszélni és enni. Két alosztály létezik: macska és kutya, amely kiterjeszti az állat szuperosztály nevét.
  • Ez a két alosztály ugyanazokat a funkciókat használja, amelyek beszélnek és esznek, de megváltoztatják a megvalósítást, ugyanakkor megőrzik a módszerek aláírását. Most a fő módszerünkben, ha ezeket a függvényeket a referenciaváltozó kiválasztásával hívja meg, akkor csak futásidejűekben eldönti, hogy melyik funkciót kell hívnia. Például, ha az objektum rendelkezik a gyermekosztály különbségével, amely macska vagy kutya, akkor az adott osztály funkcióját másképp nevezzük, ha az objektum a szülőosztály referenciáját tartalmazza, akkor az állatosztály funkcióját hívjuk meg.
  • Itt látnunk kell, hogy a függvény meghívása nem függ a referenciaváltozó típusától. Ezt a fordító csak futásidejűleg határozza meg, ez segít a futásidejű polimorfizmus megvalósításában. Elősegíti a módszer általános meghatározásának módszerének speciális meghatározását is a szülőosztályban.

Kód:

class Animal(
//Overridden method
public void eat()
(
System.out.println("Animal is eating");
)
public void speak()
(
System.out.println("Animal is speaking");
)
)
class Cat extends Animal(
//Overriding method
public void eat()
(
System.out.println("Cat is eating");
)
public void speak()
(
System.out.println("Cat is meowing");
)
)
class Dog extends Animal(
//Overriding method
public void eat()
(
System.out.println("Dog is Barking");
)
public void speak()
(
System.out.println("Dog is speaking");
)
)
public class Test(
public static void main(String() args)(
Animal an=new Dog();
Animal an1 = new Cat();
Animal an2 = new Animal();
an.speak();
an.eat();
an1.speak();
an1.eat();
an2.eat();
)
)

Kimenet:

Megjegyzés: A gyermektípus referenciaváltozója nem használható a szülőtípusra történő hivatkozás tartására.

A módszer felülbírálásának szabályai

Az alábbiakban bemutatjuk a felülírási szabályokat:

1. szabály

A szülőosztály függvényében deklarált paraméterek listájának meg kell egyeznie a gyermekosztályban alkalmazott felülíró módszer meghatározásában említett paraméterek listájával.

Például:

A módszer a szülőosztályban

public int test1(int a);

Gyerekosztályban alkalmazott módszer - nyilvános karakterlánc teszt1 (); // a módszer felülbírálása itt nem támogatott, mivel a visszatérés típusa és az argumentumok különböznek, de fordítási időbeli hiba nem jelentkezik. Ezt a módszert a gyermek osztály új módszerének tekintik.

2. szabály

A gyermekosztályban alkalmazott módszer visszatérési típusának meg kell egyeznie vagy felül kell vizsgálnia a módszer visszatérítési típusának altípusát.

Például:

A módszer egy szülői osztályban

public Object test1(int a);

A módszer a gyermek osztályban

public String test1();

Helytelen

A módszer a szülőosztályban

public String test1(int a);

A módszer a gyermek osztályban

public Object test1();

3. szabály

A szülőosztály módszerében jelenlévő hozzáférés-meghatározónak ugyanolyan korlátozónak vagy korlátozóbbnak kell lennie, mint annak a módszernek, amely felülbírálja azt a gyermekosztályban.

Helytelen

A módszer a szülőosztályban

public int test1(int a);

Módszer a gyermek osztályban

private int test1() ; // more restrictive than public one

4. szabály

Csak a nyilvános vagy alapértelmezett hozzáférés-specifikátorral rendelkező példány módszer felülbírálható. Ennek oka az, hogy csak ez a példány módszer örökölhető az alosztályán, és így azt állíthatják, hogy felülbírálják. Abban az esetben, ha a szülőosztályban megadott példány módszer szigorúbb példa a nyilvános módszer, akkor nem örökli az alosztályában, és ha valaki ugyanazt a módszert határozza meg egy alosztályban, akkor a forgatókönyvet nem tekintik felülíró módszernek, mivel a nyilvános módszerek nem örökölhető, ezt nem szabad felülbírálni.

Például:

A módszer a szülőosztályban

public int test1(int a); //can be inherited and overridden

A módszer a gyermek osztályban

private int test1();

Helytelen

A módszer a szülőosztályban

private int test1(int a); //can not be inherited and overridden

A módszer a gyermek osztályban

private int test1();//not overriding method of the parent class

A gyermekosztály új magánmódszerének tekintik

5. szabály

A szuper kulcsszó felhasználható a szülő osztály azon funkciójának meghívására, amelyet alosztálya felülbírált.

class Animal(
//Overridden method
public void eat()
(
System.out.println("Animal is eating");
)
public void speak()
(
System.out.println("Animal is speaking");
)
)
class Dog extends Animal(
//Overriding method
public void eat()
(
System.out.println("Dog is Barking");
)
public void speak()
(
super.speak(); // Here super keyword is used to call the speak function of the super class.ieAnimal
)
)
public class Test(
public static void main(String() args)(
Animal an=new Dog();
Animal an2 = new Animal();
an.speak();
an.eat();
an2.eat();
)
)

Kimenet:

6. szabály

Egy osztály építőjét nem szabad felülbírálni alosztályaival, mivel két osztály építője nem lehet azonos.

# 7. Szabály

Kivételkezelés a felülbírálás során.

  • A szülőosztályban az incase módszer nem hoz kivételt, akkor az alosztályban levő felülbíráló módszer csak egyetlen nem ellenőrzött kivételt vonhat maga után. Ha a felülíró módszer ellenőrzött kivételt mutat, akkor a fordító hibát mutat.
  • Ha a szülőosztályban felülbírált módszer kivételes tandem felülíró módszert vet fel az alosztályban, az azonos szint vagy altípusa kivételével a kivételi hierarchiában vagy egyáltalán nem kell kivételt végrehajtani.

8. szabály

A többszintű öröklés során felülírható módszer is lehetséges.

Kód:

class Creature (
//Overriding method
public void eat()
(
System.out.println("Creature is eating");
)
public void speak()
(
System.out.println("Creature is speaking");
)
)
class Animal extends Creature(
//Overridden method
public void eat()
(
System.out.println("Animal is eating");
)
public void speak()
(
System.out.println("Animal is speaking");
)
)
class Dog extends Animal(
//Overriding method
public void eat()
(
System.out.println("Dog is Barking");
)
public void speak()
(
System.out.println("Dog is speaking");
)
)
public class Test(public static void main(String() args)(
Creature an=new Dog();
Animal an1 = new Animal();
Animal an2 = new Dog();
an.speak();
an.eat();
an1.speak();
an1.eat();
an2.eat();
)
)

Kimenet:

9. szabály

A Java felülbíráló módszerszabályai

  • A szinkronizált módszer könnyen felülbírálható egy nem szinkronizált módszerrel, és fordítva.
  • Az abszolút osztályokban vagy interfészekben jelen lévő absztrakt módszert úgy kell átírni, hogy a bejelentett módszerekre specifikus megvalósítást biztosítson, különben fordítási idő hibát fog mutatni.
  • A szülőosztályban szereplő statikus módszerrel azonos nevű statikus módszer meghatározása az eljárás elrejtése, nem pedig a módszer felülbírálása, mivel nem valósítja meg a futásidejű polimorfizmust.
  • A végső módszereket nem szabad felülbírálni.

10. szabály

A módszer felülbírálása C ++ esetén

A c pluszban felülbíráló módszer akkor érhető el, ha egy módszert virtuálisnak nyilvánítanak. Virtuális kulcsszót használunk a c ++ futásidejű polimorfizmus elérésére. Míg a Java-ban az összes funkció alapértelmezés szerint virtuális.

11. szabály

A módszer felülírása különbözik a módszer túlterhelésétől, mivel ez a futásidejű polimorfizmus folyamata, míg a túlterhelés és a módszer a fordítási idő polimorfizmusának példája. A felülíró módszernél kötelező a módszer aláírásának azonos megtartása. Ha bármilyen változtatást végezzünk a metódus visszatérési típusában vagy a paraméterlistában, akkor a fordító azt metódustúlterhelésként kezeli.

A módszer felülbírálása Módszer túlterhelés
class A(
public void test()(
System.out.println("In class A");
)
)
class B extends A(
public void test()(
System.out.println("In class A");
))public class Test(
public static void main(String() args)(
A a=new B();
a.test();
A b =new A();
b.test();
))
class A(
public void test()(
System.out.println("Method without arguments");
)
public void test(int x)(
System.out.println("Method with arguments");
System.out.println(x);
))public class Test(
public static void main(String() args)(
A a=new A();
a.test();
a.test(2);
)
)

Kimenet:

Mikor kell használni a felülíró módszert?

Az alábbiakban bemutatjuk a felülbírálás használatának módszereit:

  • Az OOP az öröklés csodálatos tulajdonsága, hogy nagy hierarchiát alakítson ki a szuperosztály és az alosztály között, a kisebb specializációtól a nagyobb specializációig.
  • Használhatjuk-e a szuperosztályt egy olyan keret létrehozásához, amely örökölhető az összes alosztályában, és az alosztályokban meghatározhatjuk-e ezen módszerek eltérő működését? Ezt olyan felülbíráló tulajdonsággal érik el, ahol speciális működés biztosítható az örökölt módszerek init alosztályai számára.
  • Ez egyúttal elősegíti a több osztály számára a keret létrehozását azáltal, hogy biztosítja a változók gyűjteményét és a módszert, amelyet minden alosztályában be kell vezetni.

Következtetés

Az OOP-k, a koncepciók hatékony és hatékony felhasználást tesznek a kód robusztusá és könnyű újrafelhasználhatóvá. A felülíró szolgáltatás javítja az öröklés felhasználását, hogy biztosítsa az alosztályok szülőosztályának általános módszerének specifikus megvalósítását. Ez a futásidejű polimorfizmus koncepciót használja a módszer helyes meghatározásának kiváltására. A dinamikus módszer elküldése csak futásidejűleg történik, amely ellenőrzi annak az osztálynak a referenciáját, amelyet az objektum tart, hogy meghívja a módszert. Ez a szolgáltatás különféle szabályokon vezetett át, és nem vonatkozik statikus módszerekre. A módszer felülbírálását bármilyen objektum-orientált nyelven megvalósíthatjuk, és gyorsabbá és robusztusabbá tehetjük programunkat.

Ajánlott cikkek

Ez egy útmutató az OOP-k felülbírálására. Itt tárgyaljuk, hogy a felülbírálás hogyan működik az OOP-kban, mikor kell használni, és 11 szabály a kódokkal és a kimenettel. Megnézheti más kapcsolódó cikkeinket, hogy többet megtudjon-

  1. A PHP felülbírálása
  2. A JavaScript felülírása
  3. Mi az OOP?
  4. Módszer felülbíráló C #
  5. Példák a Java felülírására
  6. JavaScript statikus módszer | Hogyan dolgozzunk példákkal

Kategória: