Úvod do preťaženia a potlačenia v Jave

Pozrime sa najprv na to, čo názov na prvý pohľad navrhuje. „Preťaženie“ znamená: zaťažiť niekoho pôvodné funkcie, nie? Zatiaľ čo „hlavné“ znamená: poskytnutie novej funkčnosti okrem pôvodnej funkčnosti každého. V tomto článku sa podrobne pozrieme na Preťaženie a Overriding v Jave. Áno, v jazyku Java sa tieto implementujú rovnako programovo. Pozrime sa na to jeden po druhom.

Preťaženie v Jave

Ak má trieda java viacero metód s rovnakým názvom, ale s rôznymi argumentmi, nazývame ju metóda Preťaženie metód. Pri zachovaní rovnakého mena iba zvyšujeme čitateľnosť programového kódu. Predpokladajme napríklad, že musíme vykonať nejaké operácie sčítania na niektorých daných číslach. Povedzme, že názov našej metódy je „sčítanie ()“. Tu je možné pridať dve čísla, tri čísla alebo viac. Preto v závislosti od toho, koľko čísel bude zahŕňať ďalšiu operáciu, môžeme zmeniť argumenty (alebo parametre) funkcie. Ale namiesto toho, ak by ste napísali rôzne metódy pre rôzne počty argumentov, bude ťažké rozpoznať, pretože názov by bol iný. Preťažením teda dosahujeme lepšiu čitateľnosť nášho kódu. Takže teraz je otázkou, ako dosiahneme preťaženie?

Pozrime sa na nich spolu s príkladmi kódov.

Metóda č. 1 - Modifikáciou počtu parametrov

Takže tu urobíme operácie sčítania niektorých čísel. Za týmto účelom vytvorme triedu s názvom „AdditionOperation“. V tejto triede máme dve metódy s názvom „navyše ()“. V jednej z týchto metód vykonáme sčítanie dvoch čísiel. V druhom vykonáme sčítanie troch čísiel. Dosiahneme to jednoduchou zmenou počtu parametrov v týchto metódach, ale názov zostaneme rovnaký. Týmto spôsobom tu preťažujeme metódu „sčítanie ()“.

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ýkon:

Metóda č. 2 - Úpravou dátového typu

Takže tu vykonáme operácie sčítania na rôznych typoch, napríklad medzi celočíselným typom a medzi dvojitým typom. Za týmto účelom vytvorme triedu s názvom „AdditionOperation“. V tejto triede máme dve metódy s názvom „navyše ()“. V jednej z týchto metód vykonáme pridanie dvoch celých čísel. V druhom vykonáme sčítanie dvoch dvojitých. Dosiahneme to jednoduchou zmenou typu parametrov v týchto metódach, ale názov zostaneme rovnaký. Týmto spôsobom tu preťažujeme metódu „sčítanie ()“.

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ýkon:

Body, ktoré sa majú zaznamenať za preťaženie

  • Preťaženie v jave je v podstate „preťaženie polymeterom pri kompilácii v C # orphism“. Polymorfizmus kompilácie v jave sa tiež nazýva „statická metóda expedície“ alebo „včasná väzba“. Čo tým myslím tým žargónom?
  • Polymorfizmus, ako už názov napovedá, je v podstate schopnosť mať mnoho podôb (poly: veľa, morf: forma). Takže tu je prepojenie alebo väzba preťaženej funkcie a objektu hotové, skompilovať čas. Preto sa nazýva polymorfizmus kompilácie.
  • V zásade je väzba funkcie na objekt uskutočňovaná skoro pred časom spustenia (tj počas kompilácie), preto sa nazýva aj „včasná väzba“.
  • Statické odosielanie je typ odoslania polymorfizmu alebo metódy, ktorý hovorí, ako java vyberie, ktorá funkčnosť metódy sa použije v čase kompilácie. (Myslím, či v našom príklade kódovania pridá dve alebo tri čísla). Názov sa nazýva aj statická metóda odoslania.

Prevláda v Jave

  • Ak má podtrieda java alebo podradená trieda metódu, ktorá má rovnaký názov a obsahuje rovnaké parametre alebo argumenty a podobný návratový typ ako metóda, ktorá je prítomná v jej nadtriede alebo nadradenej triede, môžeme metódu podradenej triedy nazvať ako prepísaná metóda metódy jej nadradenej triedy.
  • Predpokladajme napríklad, že potrebujeme vykonať určitú operáciu zobrazenia podľa typu triedy. Myslím tým, že ak zavolám metódu nadradenej triedy, zobrazí správu, ktorá je definovaná v nadradenej triede. Keď však zavoláme metódu podradenej triedy, prepíše zobrazenú správu svojej nadradenej triedy a zobrazí zobrazenú správu, ktorá je definovaná vo vnútri metódy podradenej triedy. Preto v závislosti od toho, aký displej potrebujeme ukázať, môžeme zavolať súvisiacu triedu (rodič alebo dieťa). Tu nemeníme názov metódy, argument a typ návratu. Práve meníme funkčnosť metódy v podradenej triede. Ale namiesto toho, ak to neprekážeme, tj nedáme konkrétnu implementáciu podradenej metódy, potom pri volaní metódy zobrazí rovnakú správu ako v nadradenej triede.
  • Pri písaní kódu použijeme pred prepísanou metódou anotáciu @ Prepísať. @Override anotácia hovorí kompilátoru, že táto metóda má prepísať metódu, ktorá bola deklarovaná v nadtriede. Aj keď to nie je povinné, pomáha predchádzať chybám. Ak metóda, ktorá je anotovaná pomocou @Override, neprepíše metódu, kompilátor vygeneruje chybu.

Pravidlá pre potlačenie metód Java

  1. Metóda musí mať rovnaký názov ako v nadradenej triede
  2. Metóda musí mať rovnaký parameter ako v nadradenej triede.
  3. Musí existovať vzťah IS-A (dedičnosť).

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ýkon:

Obmedzenia v metóde Prepísanie:

  1. Súkromné ​​metódy nadradenej triedy nemožno prepísať.
  2. Konečné metódy nemôžu byť potlačené
  3. Statické metódy nemožno potlačiť

Body, ktoré treba zaznamenať za prvoradé

  • Preťaženie v jave je v podstate „polymorfizmus runtime“. Polymorfizmus behu v jave sa tiež nazýva „dynamická metóda expedície“ alebo „neskorá väzba“. Čo znamená ten žargón?
  • Polymorfizmus, ako už názov napovedá, je v podstate schopnosť mať mnoho podôb (poly: veľa, morf: forma). Takže, tu zavolajte preťaženú funkciu s objektom je hotový čas behu. Preto sa nazýva behom polymorfizmu.
  • V podstate tu sa väzba funkcie na objekt robí neskoro, čo je po kompilácii (tj počas behu); preto sa tiež nazýva „neskoré viazanie“.
  • Dynamické odosielanie je typ odoslania polymorfizmu alebo metódy, ktorý hovorí, ako si Java vyberie, ktorá funkčnosť metódy sa použije v čase vykonávania. Názov sa nazýva aj dynamická metóda odoslania.

záver

Týmto sa končí učenie témy „Preťaženie a prekonanie v Jave“. Napíšte kódy uvedené vo vyššie uvedených príkladoch do kompilátora java a skontrolujte výstup. Ak sa sami nevyučíte, učenie kódov bude neúplné, pretože to zlepší vaše kódovacie schopnosti. Šťastný kódovanie !!

Odporúčané články

Toto je sprievodca preťažením a potlačením v Jave. Tu diskutujeme metódy preťaženia spolu s pravidlami a obmedzeniami Overriding v Jave. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Prepísanie v jazyku JavaScript
  2. Prevažujúci počet OOP
  3. Čo sú generiká v jazyku Java?
  4. Prevažovanie v PHP
  5. Preťaženie Pythonu
  6. Dedičnosť v PHP
  7. Kompletný sprievodca dedičstvom v Pythone
  8. Preťaženie a prekonanie v C #
  9. Typy a manipulácia s chybami v JavaScripte
  10. Príklady a ako generiká fungujú v jazyku C #
  11. Funkcia a pravidlá zrušenia v Pythone

Kategórie: