Forskjellene mellom metodeoverbelastning og metodeoverstyring i Java er som følger:
Metode Overbelastning | Metodeoverstyring |
|---|---|
| Metodeoverbelastning er en kompileringstidspolymorfisme. | Metodeoverstyring er en kjøretidspolymorfisme. |
| Metodeoverbelastning bidrar til å øke lesbarheten til programmet. | Metodeoverstyring brukes til å gi den spesifikke implementeringen av metoden som allerede er gitt av dens overordnede klasse eller superklasse. |
| Det skjer i klassen. | Det utføres i to klasser med arveforhold. |
| Metodeoverbelastning kan kreve arv eller ikke. | Metodeoverstyring trenger alltid arv. |
| Ved metodeoverbelastning må metoder ha samme navn og forskjellige signaturer. | Ved metodeoverstyring må metoder ha samme navn og samme signatur. |
| Ved metodeoverbelastning kan returtypen være den samme eller ikke, men vi må bare endre parameteren. | Ved metodeoverstyring må returtypen være den samme eller samvariant. |
| Statisk binding brukes for overbelastede metoder. | Dynamisk binding brukes for overordnede metoder. |
| Dårlig ytelse på grunn av kompileringstidspolymorfisme. | Det gir bedre ytelse. Årsaken bak dette er at bindingen av overstyrte metoder gjøres under kjøring. |
| Private og endelige metoder kan bli overbelastet. | Private og endelige metoder kan ikke overstyres. |
| Argumentlisten bør være forskjellig mens du utfører metodeoverbelastning. | Argumentlisten skal være den samme i metodeoverstyring. |
Metodeoverbelastning i Java
Metode Overbelastning er en Kompiler tidspolymorfisme . Ved metodeoverbelastning deler mer enn én metode det samme metodenavnet med en annen signatur i klassen. Ved metodeoverbelastning kan eller kan returtypen være den samme, men vi må endre parameteren fordi vi i java ikke kan oppnå metodeoverbelastning ved å endre bare metodens returtype.
Eksempel på metodeoverbelastning:
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)); } }> Produksjon
add() with 2 parameters 10 add() with 3 parameters 17>
Metodeoverstyring i Java
Metodeoverstyring er en Kjøretidspolymorfisme . Ved metodeoverstyring gir den avledede klassen den spesifikke implementeringen av metoden som allerede er gitt av basisklassen eller overordnet klasse. Ved metodeoverstyring må returtypen være den samme eller samvariant (avkastningstypen kan variere i samme retning som den avledede klassen).
Eksempel på metodeoverstyring:
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(); } }> Produksjon
eat() method of derived class Dog is eating. eat() method of base class eating. eat() method of derived class Dog is eating.>
Forklaring av programmet ovenfor:
Her kan vi se at en metode eat() har overstyrt det avledede klassenavnet Hund som allerede er gitt av basisklassenavnet Dyr . Når vi oppretter forekomsten av klassen Dog og kaller eat()-metoden, ser vi at bare avledet klasse eat()-metoden kjører i stedet for basisklassemetoden eat(), og når vi oppretter forekomsten av klassen Animal og kaller eat( )-metoden, ser vi at bare basisklassen eat()-metoden kjører i stedet for den avledede klassemetoden eat().