Bevezetés a Java túlterheléséhez és felülírásához

Vizsgáljuk meg először, hogy mit ejt a név első pillantásra. A „túlterhelés” azt jelenti: extra terhet róna bárki eredeti funkciójára, igaz? Mivel a „felülbírálás” azt jelenti: új funkciók biztosítását bárki eredeti funkcióin kívül. Ebben a cikkben részletesen megvizsgáljuk a Java túlterhelését és felülírását. Igen, a Java-ban is ezeket ugyanúgy valósítják meg programozottan. Vizsgáljuk meg egyenként ezt.

Túlterhelés a Java-ban

Ha egy java osztálynak többféle módja van, ugyanazzal a névvel, de eltérő argumentumokkal, akkor azt úgy hívjuk, hogy Method Overloading. A név változatlanul tartásával javítottuk a programkód olvashatóságát. Tegyük fel például, hogy bizonyos megadott számokon valamilyen összeadási műveletet kell végrehajtanunk. Tegyük fel, hogy módszerünk neve „add ()”. Az összeadást két, három vagy annál nagyobb szám között lehet elvégezni. Ezért megváltoztathatjuk a függvény argumentumait (vagy paramétereit) attól függően, hogy hány számot tartalmaz további művelet. Ehelyett azonban, ha különféle módszereket írsz a különböző érvek számára, ezt nehéz felismerni, mivel a név más lenne. Ezért a túlterheléssel jobb kódolhatóságot érünk el. Tehát most a kérdés az, hogyan érjük el a túlterhelést?

Nézzük meg ezeket egyenként példákkal.

1. módszer - a paraméterek számának módosításával

Tehát itt néhány számon végrehajtjuk a kiegészítő műveletet. Ehhez hozzunk létre egy „AdditionOperation” nevû osztályt. Az osztályon belül legyen két módszer, melynek neve „add ()”. Ezen módszerek egyikében két számot adunk hozzá. A másikban három szám összeadását hajtjuk végre. Ezt akkor érjük el, ha egyszerűen megváltoztatjuk a paraméterek számát ezekben a módszerekben, de a nevet nem változtatjuk. Ily módon itt túlterheljük az „add ()” módszert.

Kód:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

Kimenet:

2. módszer - az adattípus módosításával

Tehát itt különféle típusokon végezzünk kiegészítő műveleteket, például egész szám és kettős típus között. Ehhez hozzunk létre egy „AdditionOperation” nevû osztályt. Az osztályon belül tegyünk két módszert, az „add ()” elnevezéssel. Ezen módszerek egyikében két egész szám hozzáadását hajtjuk végre. A másikban kettős dupla hozzáadását hajtjuk végre. Ezt akkor érjük el, ha egyszerűen megváltoztatjuk a paraméterek típusát az ezekben a módszerekben, de a nevét változatlanul tartjuk. Ily módon itt túlterheljük az „add ()” módszert.

Kód:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

Kimenet:

A túlterhelés szempontjából figyelembe veendő pontok

  • A java túlterhelése alapvetően „fordítási idő polymMethod Overloading in C # orphism”. A java fordított idejű polimorfizmusát „statikus módszer disztribúciónak” vagy „korai kötésnek” is hívják. Szóval, mit értek abban a zsargonban?
  • A polimorfizmus, amint a neve is sugallja, alapvetõen sokféle formát ölthet (poli: sok, morph: forma). Tehát itt a túlterhelt függvény és az objektum összekapcsolása vagy összerendelése készen áll az idő fordítására. Ezért fordulási idő polimorfizmusnak hívják.
  • Alapvetően itt a függvény objektumhoz történő kötését korábban a futási idő előtt végezzük (azaz fordítási idő alatt), ezért „korai kötésre” is nevezünk.
  • A statikus disztribúció egy olyan polimorfizmus vagy módszer disztribúció, amely megmondja, hogy a java hogyan választja ki a módszer azon funkcióit, amelyek felhasználásra kerülnek az fordítási időben. (Úgy értem, hogy ez két vagy három szám összeadását eredményezi-e a kódolási példánkban). Tehát a név Static method Dispatch néven is ismert.

A Java alapon érvényes

  • Ha egy java alosztálynak vagy gyermekosztálynak van egy azonos nevű módszere, amely ugyanazokat a paramétereket vagy argumentumokat és hasonló visszatérési típust tartalmaz, mint a szuperosztályban vagy a szülőosztályban található módszer, akkor a gyermekosztály módszerét nevezzük a szülőosztály módszerének felülbírált módszere.
  • Tegyük fel például, hogy valamilyen megjelenítési műveletet kell végrehajtanunk az osztály típusa szerint. Úgy értem, ha egy szülőosztály módszerét hívom meg, akkor egy üzenet jelenik meg, amelyet egy szülőosztály határoz meg. De ha a gyermekosztály módszerét nevezzük, akkor az felülbírálja a szülői osztály megjelenítési üzenetét, és megjeleníti a gyermekosztály módszerén belül meghatározott megjelenítési üzenetet. Ezért attól függően, hogy melyik kijelzőt kell megjelenítenünk, meghívhatjuk a kapcsolódó osztályt (szülő vagy gyermek). Itt nem módosítjuk a metódus nevét, argumentumát és visszatérési típusát. Csak módosítottuk a módszer funkcionalitását a gyermek osztályban. Ehelyett azonban, ha nem hajtunk végre felülírást, azaz nem adjuk meg a gyermek módszer konkrét megvalósítását, akkor a módszer meghívásakor ugyanaz az üzenet jelenik meg, mint a szülői osztályban.
  • Kód írása közben a @ felülbíráló annotációt fogjuk használni a módszer felülbírálása előtt. A @Oride parancs azt mondja a fordítónak, hogy a módszernek felül kell írnia egy szuperosztályban deklarált módszert. Bár nem kötelező használni, ez segít a hibák megelőzésében. Ha egy olyan módszer, amelynél a @Override megjegyzés van, nem tudja felülírni egy módszert, a fordító hibát generál.

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

  1. A metódusnak ugyanazzal a névvel kell rendelkeznie, mint a szülőosztályban
  2. A módszernek ugyanazzal a paraméterrel kell rendelkeznie, mint a szülőosztályban.
  3. Kell lennie egy IS-A kapcsolatnak (öröklés).

Kód:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

Kimenet:

A módszer korlátozásai:

  1. A szülőosztály privát módszereit nem szabad felülbírálni.
  2. A végső módszereket nem szabad felülbírálni
  3. A statikus módszereket nem szabad felülbírálni

A felülbírálásra kerülő pontok

  • A java túlterhelése alapvetően „futási idő polimorfizmusa”. A futási idő polimorfizmusát a java-ban „Dynamic method Dispatch” vagy „késői kötés” néven is hívják. Tehát mit jelent ez a zsargon?
  • A polimorfizmus, amint a neve is sugallja, alapvetõen sokféle formát ölthet (poli: sok, morph: forma). Tehát itt az objektummal túlterhelt funkcióra való hívás megtörténik a futási idővel. Ezért futási idő polimorfizmusnak nevezték.
  • Alapvetően itt a funkció objektumhoz kötése későn történik, azaz az összeállítás után (azaz futási idő alatt); ennélfogva „késő kötésnek” is nevezik.
  • A dinamikus disztribúció egy olyan polimorfizmus vagy módszer-disztribúció, amely megmondja, hogy a Java hogyan választja ki a módszer azon funkcióit, amelyek futási időben kerülnek felhasználásra. Tehát a név Dynamic method Dispatch néven is ismert.

Következtetés

Ez befejezi a „Túlterhelés és felülbírálás a Java-ban” téma elsajátítását. Írja be a fenti példákban említett kódokat a java fordítóba, és ellenőrizze a kimenetet. A kódok elsajátítása hiányos lesz, ha önmagában nem fogja gyakorolni, mivel ez javítja a kódolási képességeit. Boldog kódolást !!

Ajánlott cikkek

Ez egy útmutató a Java túlterhelésének és felülírásának. Itt tárgyaljuk a túlterhelés módszereit, valamint a Java felülírásának szabályait és korlátozásait. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. A JavaScript felülírása
  2. Az OOP felülbírálása
  3. Mik a Generics a Java-ban?
  4. A PHP felülbírálása
  5. Python túlterhelés
  6. Öröklés a PHP-ben
  7. Teljes útmutató az öröklésről a Pythonban
  8. Túlterhelés és felülbírálás a C # -ben
  9. Típusok és kezelési hibák a JavaScript-ben
  10. Példák és hogyan működnek a generikus gyógyszerek a C # -ben
  11. A Python működése és szabályai

Kategória: