Skirtumai tarp metodo perkrovimo ir metodo nepaisymo Java yra tokie:
Metodas Perkrovimas | Metodo nepaisymas |
|---|---|
| Metodo perkrovimas yra kompiliavimo laiko polimorfizmas. | Metodo nepaisymas yra vykdymo laiko polimorfizmas. |
| Metodo perkrovimas padeda padidinti programos skaitomumą. | Metodo nepaisymas naudojamas norint suteikti konkretų metodo įgyvendinimą, kurį jau teikia pirminė klasė arba superklasė. |
| Tai vyksta klasėje. | Jis atliekamas dviejose klasėse su paveldėjimo santykiais. |
| Metodo perkrovimas gali reikalauti arba nereikalauti paveldėjimo. | Metodo nepaisymas visada turi būti paveldimas. |
| Perkraunant metodą, metodai turi turėti tą patį pavadinimą ir skirtingus parašus. | Naudojant metodo nepaisymą, metodai turi turėti tą patį pavadinimą ir tą patį parašą. |
| Metodo perkrovimo atveju grąžinimo tipas gali būti toks pat arba negali būti, bet mes tiesiog turime pakeisti parametrą. | Metodo nepaisymas grąžinimo tipas turi būti toks pat arba bendras variantas. |
| Perkrautiems metodams naudojamas statinis įrišimas. | Dinaminis susiejimas naudojamas nepaisančius metodus. |
| Prastas našumas dėl kompiliavimo laiko polimorfizmo. | Tai suteikia geresnį našumą. Priežastis ta, kad nepaisytų metodų susiejimas atliekamas vykdymo metu. |
| Privatūs ir galutiniai metodai gali būti perkrauti. | Privatūs ir galutiniai metodai negali būti nepaisomi. |
| Argumentų sąrašas turėtų skirtis atliekant metodo perkrovimą. | Argumentų sąrašas turi būti toks pat, kai taikomas metodas. |
Metodo perkrovimas Java
Metodas Perkrovimas yra Suskaičiuokite laiko polimorfizmą . Perkraunant metodą, daugiau nei vienas metodas naudoja tą patį metodo pavadinimą su skirtingu parašu klasėje. Metodo perkrovimo atveju grąžinimo tipas gali būti arba negali būti vienodas, tačiau mes turime pakeisti parametrą, nes java negalime pasiekti metodo perkrovos, pakeitę tik metodo grąžinimo tipą.
Metodo perkrovimo pavyzdys:
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)); } }> Išvestis
add() with 2 parameters 10 add() with 3 parameters 17>
Metodo nepaisymas Java
Metodo nepaisymas yra Vykdymo laiko polimorfizmas . Metodo nepaisymo metu išvestinė klasė pateikia konkretų metodo įgyvendinimą, kurį jau teikia pagrindinė arba pagrindinė klasė. Naudojant metodo nepaisymą, grąžinimo tipas turi būti toks pat arba bendravariantas (grąžinimo tipas gali skirtis ta pačia kryptimi kaip ir išvestinė klasė).
Metodo nepaisymo pavyzdys:
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(); } }> Išvestis
eat() method of derived class Dog is eating. eat() method of base class eating. eat() method of derived class Dog is eating.>
Aukščiau pateiktos programos paaiškinimas:
Čia matome, kad metodas eat() buvo perrašytas išvestinėje klasės pavadinime Šuo kurią jau suteikia pagrindinės klasės pavadinimas Gyvūnas . Kai sukuriame klasės Dog egzempliorių ir iškviečiame eat() metodą, matome, kad veikia tik išvestinis class eat() metodas, o ne bazinės klasės metodas eat(), o kai sukuriame klasės Animal egzempliorių ir iškviečiame eat( ) metodą, matome, kad veikia tik bazinės klasės eat() metodas, o ne išvestinis klasės metodas eat().