Úvod do přetížení a přepsání v Javě

Podívejme se nejprve na to, co název na první pohled navrhuje. „Přetížení“ znamená: zatěžovat něčí původní funkčnost, že? Vzhledem k tomu, „Přepsání“ znamená: poskytnutí nové funkce kromě původní funkčnosti kohokoli. V tomto článku se podrobně podíváme na přetížení a přepsání v Javě. Ano, v Javě jsou také implementovány stejným způsobem programově. Pojďme se na to podívat jeden po druhém.

Přetížení v Javě

Pokud má třída java více metod se stejným názvem, ale s různými argumenty, nazýváme ji přetěžování metod. Zachováním stejného jména pouze zvyšujeme čitelnost programového kódu. Předpokládejme například, že musíme provést nějaké operace sčítání na některých zadaných číslech. Řekněme, že název naší metody je „sčítání ()“. Zde lze přidat dvě čísla, tři nebo více čísel. Proto v závislosti na tom, kolik čísel bude zahrnovat operaci navíc, můžeme změnit argumenty (nebo parametry) funkce. Ale místo toho, pokud byste psali různé metody pro různý počet argumentů, bude obtížné rozpoznat, protože název by byl jiný. Proto přetížením dosahujeme lepší čitelnosti našeho kódu. Teď je otázkou, jak dosáhneme přetížení?

Podívejme se na ně jeden po druhém s ukázkovými kódy.

Metoda # 1 - Změnou počtu parametrů

Takže zde provedeme sčítání operací na některých číslech. Za tímto účelem vytvořme třídu nazvanou „AdditionOperation“. Uvnitř této třídy máme dvě metody nazvané „navíc ()“. V jedné z těchto metod provedeme sčítání dvou čísel. V druhém provedeme sčítání tří čísel. Toho dosáhneme jednoduše změnou počtu parametrů v těchto metodách, ale jméno si ponecháme stejné. Tímto způsobem zde přetěžujeme metodu „add ()“.

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.
)
)

Výstup:

Metoda # 2 - Úpravou datového typu

Tady tedy provedeme operace sčítání na různých typech, například mezi celočíselným typem a mezi dvojitým typem. Za tímto účelem vytvořme třídu nazvanou „AdditionOperation“. Uvnitř této třídy máme dvě metody nazvané „navíc ()“. V jedné z těchto metod provedeme přidání dvou celých čísel. V druhé provedeme sčítání dvou dvojitých. Toho dosáhneme jednoduše změnou typu parametrů v těchto metodách, ale jméno si ponecháme stejné. Tímto způsobem zde přetěžujeme metodu „add ()“.

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.
)
)

Výstup:

Body, které je třeba zaznamenat za přetížení

  • Přetížení v javě je v zásadě „překládáním polymetetového přetížení v orfismu C #“. Polymorfismus kompilace v java se také nazývá „statická metoda expedice“ nebo „včasná vazba“. Co tím myslím tím žargonu?
  • Polymorfismus, jak název napovídá, je v podstatě schopnost nabývat mnoha podob (poly: many, morph: form). Takže zde je propojení nebo vazba přetížené funkce a objektu dokončeno kompilační čas. Proto se nazývá polymorfismus kompilace.
  • V zásadě se zde vazba funkce na objekt provádí brzy před spuštěním (tj. Během kompilačního času), proto se také nazývá „včasná vazba“.
  • Statické odeslání je typ odeslání polymorfismu nebo metody, který říká, jak java vybere, která funkčnost metody bude použita v době kompilace. (Myslím, že v našem příkladu kódování doplní dvě nebo tři čísla). Název se také nazývá Static method Dispatch.

Převažující v Javě

  • Pokud java podtřída nebo podřízená třída obsahuje metodu, která je stejného jména a obsahuje stejné parametry nebo argumenty a podobný návratový typ jako metoda, která je přítomna v její nadřazené třídě nebo nadřazené třídě, můžeme metodu podřízené třídy nazvat jako přepsaná metoda metody její nadřazené třídy.
  • Předpokládejme například, že musíme provést nějakou operaci zobrazení podle jejího typu třídy. Myslím, že když zavolám metodu nadřazené třídy, zobrazí zprávu, která je definována v nadřazené třídě. Když však zavoláme metodu podřízené třídy, přepíše zobrazenou zprávu své nadřazené třídy a zobrazí zobrazenou zprávu, která je definována uvnitř metody podřízené třídy. Proto v závislosti na tom, jaké zobrazení musíme zobrazit, můžeme zavolat související třídu (rodič nebo dítě). Zde neměníme název metody, argument a typ návratu. Právě měníme funkčnost metody v podřízené třídě. Ale místo toho, pokud neděláme převahu, tj. Nedáme konkrétní implementaci podřízené metody, pak při vyvolání metody zobrazí stejnou zprávu jako v nadřazené třídě.
  • Při psaní kódu použijeme před přepsanou metodou anotaci @ Přepsat. @Override anotace říká kompilátoru, že metoda má přepsat metodu, která byla deklarována v nadřazené třídě. Přestože to není povinné, pomáhá předcházet chybám. Pokud metoda, která je anotována pomocí @Override, selže při přepsání metody, kompilátor vygeneruje chybu.

Pravidla pro přepsání metody Java

  1. Metoda musí mít stejný název jako v nadřazené třídě
  2. Metoda musí mít stejný parametr jako v nadřazené třídě.
  3. Musí existovat vztah IS-A (dědičnost).

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();
)
)

Výstup:

Omezení v metodě Overriding:

  1. Soukromé metody nadřazené třídy nelze přepsat.
  2. Konečné metody nelze přepsat
  3. Statické metody nelze přepsat

Body, které je třeba zaznamenat za převažující

  • Přetížení v javě je v podstatě „běhový polymorfismus“. Polymorfismus běhu v java se také nazývá „dynamická metoda expedice“ nebo „pozdní vazba“. Co znamená ten žargon?
  • Polymorfismus, jak název napovídá, je v podstatě schopnost nabývat mnoha podob (poly: many, morph: form). Takže zde volání na přetíženou funkci s objektem je provedeno za běhu. Proto se nazývá běhový polymorfismus.
  • V zásadě se zde vazba funkce na objekt provádí pozdě, což je po kompilaci (tj. Během běhu); proto se také nazývá „pozdní vazba“.
  • Dynamické odesílání je typ odesílání polymorfismu nebo metody, který říká, jak java vybere, která funkčnost metody bude použita v době běhu. Název se také nazývá dynamická metoda odesílání.

Závěr

Tím se uzavírá naše učení na téma „Přetížení a přetížení v Javě“. Zapište kódy uvedené ve výše uvedených příkladech do kompilátoru java a zkontrolujte výstup. Výuka kódů bude neúplná, pokud nebudete sami dělat hands-on, protože to zlepší vaše kódovací schopnosti. Šťastný kódování !!

Doporučené články

Toto je průvodce přetížením a přepsáním v Javě. Zde diskutujeme metody v přetížení spolu s pravidly a omezeními Overriding v Javě. Další informace naleznete také v dalších navrhovaných článcích -

  1. Přepisování v JavaScriptu
  2. Převažující v OOP
  3. Co jsou Generics v Javě?
  4. Převažující v PHP
  5. Přetížení Pythonu
  6. Dědičnost v PHP
  7. Kompletní průvodce dědictvím v Pythonu
  8. Přetížení a přemostění v C #
  9. Typy a manipulace s chybami v JavaScriptu
  10. Příklady a jak generici pracují v C #
  11. Funkce a pravidla potlačení v Pythonu

Kategorie: