logo

Rozdiel medzi preťažením metódy a prepisom metódy v jazyku Java

Rozdiely medzi preťažovaním metód a prepisovaním metód v jazyku Java sú nasledovné:

Preťaženie metódy



Prepísanie metódy

Preťaženie metódy je polymorfizmus v čase kompilácie.Prepísanie metódy je polymorfizmus za chodu.
Preťaženie metódy pomáha zvýšiť čitateľnosť programu.Prepísanie metódy sa používa na udelenie špecifickej implementácie metódy, ktorú už poskytuje jej nadradená trieda alebo nadtrieda.
Vyskytuje sa v rámci triedy.Vykonáva sa v dvoch triedach s dedičnými vzťahmi.
Preťaženie metódy môže alebo nemusí vyžadovať dedičnosť.Prepísanie metódy vždy vyžaduje dedičnosť.
Pri preťažení metódy musia mať metódy rovnaký názov a rôzne podpisy.Pri prepisovaní metódy musia mať metódy rovnaký názov a rovnaký podpis.
Pri preťažení metódy môže alebo nemôže byť návratový typ rovnaký, ale musíme len zmeniť parameter.Pri prepisovaní metódy musí byť návratový typ rovnaký alebo kovariantný.
Statická väzba sa používa pre preťažené metódy.Dynamická väzba sa používa na prepísanie metód.
Nízky výkon v dôsledku polymorfizmu času kompilácie.Poskytuje lepší výkon. Dôvodom je, že viazanie prepísaných metód sa vykonáva za behu.
Súkromné ​​a konečné metódy môžu byť preťažené.Súkromné ​​a konečné metódy nemožno prepísať.
Zoznam argumentov by sa mal pri preťažovaní metódy líšiť.Zoznam argumentov by mal byť rovnaký pri prepisovaní metódy.

Preťaženie metódy v jazyku Java

Preťaženie metódy je a Polymorfizmus času kompilácie . Pri preťažení metódy viac ako jedna metóda zdieľa rovnaký názov metódy s odlišným podpisom v triede. Pri preťažení metódy môže alebo nemôže byť návratový typ rovnaký, ale musíme zmeniť parameter, pretože v jave nemôžeme dosiahnuť preťaženie metódy zmenou iba návratového typu metódy.

Príklad preťaženia metódy:



Java
// Java Program to Implement // Method Overloading import java.io.*; class MethodOverloadingEx {  static int add(int a, int b) { return a + b; }  static int add(int a, int b, int c)  {  return a + b + c;  }  // Main Function  public static void main(String args[])  {  System.out.println('add() with 2 parameters');  // Calling function with 2 parameters  System.out.println(add(4, 6));  System.out.println('add() with 3 parameters');  // Calling function with 3 Parameters  System.out.println(add(4, 6, 7));  } }>

Výkon
add() with 2 parameters 10 add() with 3 parameters 17>

Prepísanie metódy v jazyku Java

Prepísanie metódy je a Polymorfizmus doby behu . Pri prepisovaní metódy poskytuje odvodená trieda špecifickú implementáciu metódy, ktorú už poskytuje základná trieda alebo rodičovská trieda. Pri prepisovaní metódy musí byť návratový typ rovnaký alebo kovariantný (typ návratu sa môže líšiť v rovnakom smere ako odvodená trieda).

Príklad prepísania metódy:

Java
// Java Program to implement // Method Overriding import java.io.*; // Base Class class Animal {  void eat()  {  System.out.println('eat() method of base class');  System.out.println('eating.');  } } // Inherited Class class Dog extends Animal {  void eat()  {  System.out.println('eat() method of derived class');  System.out.println('Dog is eating.');  } } // Driver Class class MethodOverridingEx {  // Main Function  public static void main(String args[])  {  Dog d1 = new Dog();  Animal a1 = new Animal();  d1.eat();   a1.eat();  // Polymorphism: Animal reference pointing to Dog object  Animal animal = new Dog();    // Calls the eat() method of Dog class  animal.eat();   } }>

Výkon
eat() method of derived class Dog is eating. eat() method of base class eating. eat() method of derived class Dog is eating.>

Vysvetlenie vyššie uvedeného programu:



Tu môžeme vidieť, že metóda eat() bola prepísaná v odvodenom názve triedy pes ktorý je už poskytnutý názvom základnej triedy Zviera . Keď vytvoríme inštanciu triedy Pes a zavoláme metódu eat(), vidíme, že namiesto metódy základnej triedy eat() beží iba metóda odvodenej triedy eat() a keď vytvoríme inštanciu triedy Animal a zavoláme eat( ), vidíme, že namiesto metódy odvodenej triedy eat() beží iba metóda základnej triedy eat().