Erot Method Overloadingin ja Method Overridingin välillä Javassa ovat seuraavat:
Menetelmän ylikuormitus | Menetelmän ohittaminen |
|---|---|
| Menetelmän ylikuormitus on käännösajan polymorfismi. | Menetelmän ohittaminen on ajonaikainen polymorfismi. |
| Menetelmän ylikuormitus auttaa lisäämään ohjelman luettavuutta. | Metodin ohitusta käytetään antamaan menetelmälle tietty toteutus, jonka sen yläluokka tai superluokka jo tarjoaa. |
| Se tapahtuu luokassa. | Se suoritetaan kahdessa luokassa perintösuhteilla. |
| Menetelmän ylikuormitus voi edellyttää periytymistä tai ei. | Menetelmän ohittaminen vaatii aina periytymistä. |
| Metodin ylikuormituksessa menetelmillä on oltava sama nimi ja eri allekirjoitukset. | Metodin ohituksessa menetelmillä on oltava sama nimi ja sama allekirjoitus. |
| Metodin ylikuormituksessa palautustyyppi voi olla tai ei voi olla sama, mutta meidän on vain muutettava parametria. | Metodin ohituksessa palautustyypin on oltava sama tai samanlainen. |
| Staattista sidontaa käytetään ylikuormitetuissa menetelmissä. | Dynaamista sidontaa käytetään ohittaviin menetelmiin. |
| Huono suorituskyky käännösajan polymorfismin vuoksi. | Se antaa paremman suorituskyvyn. Syynä tähän on se, että ohitettujen menetelmien sidonta tehdään suorituksen aikana. |
| Yksityiset ja lopulliset menetelmät voivat olla ylikuormitettuja. | Yksityisiä ja lopullisia menetelmiä ei voi ohittaa. |
| Argumenttiluettelon tulisi olla erilainen menetelmän ylikuormituksen aikana. | Argumenttiluettelon tulisi olla sama menetelmän ohituksessa. |
Menetelmän ylikuormitus Javassa
Menetelmän ylikuormitus on Kokoa aikapolymorfismi . Metodin ylikuormituksessa useammalla kuin yhdellä menetelmällä on sama menetelmän nimi ja eri allekirjoitus luokassa. Metodin ylikuormituksessa palautustyyppi voi tai ei voi olla sama, mutta parametria on muutettava, koska javassa emme voi saavuttaa menetelmän ylikuormitusta muuttamalla vain menetelmän palautustyyppiä.
Esimerkki menetelmän ylikuormituksesta:
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)); } }> Lähtö
add() with 2 parameters 10 add() with 3 parameters 17>
Menetelmän ohittaminen Javassa
Menetelmän ohittaminen on Ajoajan polymorfismi . Metodin ohituksessa johdettu luokka tarjoaa menetelmän tietyn toteutuksen, jonka perusluokka tai emoluokka jo tarjoaa. Metodin ohituksessa palautustyypin on oltava sama tai samanlainen (paluutyyppi voi vaihdella samaan suuntaan kuin johdettu luokka).
Esimerkki menetelmän ohittamisesta:
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(); } }> Lähtö
eat() method of derived class Dog is eating. eat() method of base class eating. eat() method of derived class Dog is eating.>
Selitys yllä olevasta ohjelmasta:
Tässä voimme nähdä, että menetelmä eat() on ohittanut johdetun luokan nimen Koira jonka perusluokan nimi tarjoaa jo Eläin . Kun luomme luokan Dog ilmentymän ja kutsumme eat()-metodia, näemme, että vain johdettu luokan eat()-menetelmä suoritetaan perusluokan metodi eat() sijaan, ja kun luomme luokan Animal ilmentymän ja kutsumme eat( ) -menetelmällä, näemme, että vain perusluokan eat() -menetelmä suoritetaan johdetun luokkametodin eat() sijaan.