Vad är skillnaden mellan metodöverbelastning och överstyrning?



Den här artikeln täcker de viktigaste skillnaderna mellan metodöverbelastning och åsidosättande i Java med olika exempel inklusive supernyckelord och olika regler.

Java-programmeringsspråk är det bästa valet när det gäller . Med begrepp som klasser , , , etc, blir det extremt lätt att arbeta med . Enkel åtkomst och enkel syntax gör koden effektiv och mindre komplex också. I den här artikeln lär vi oss om metodöverbelastning och åsidosättande av Java. Följande ämnen diskuteras i den här bloggen:

Vad är metodöverbelastning i Java?

Metodöverbelastning gör att metoden kan ha samma namn som skiljer sig utifrån argument eller argumenttyper. Det kan relateras till sammanställningstidspolymorfism. Nedan följer några tips som vi måste komma ihåg när vi överbelastar metoder i Java.





skillnad mellan kock och marionett
  • Vi kan inte överbelasta en returtyp.

  • Även om vi kan överbelasta måste argumenten eller ingångsparametrarna vara olika.



  • Vi kan inte överbelasta två metoder om de bara skiljer sig åt med ett statiskt nyckelord.

  • Liksom andra statiska metoder kan huvud () -metoden också överbelastas.

metodöverbelastning - metodöverbelastning och åsidosättande i Java-edureka



Låt oss ta en titt på ett enkelt program för att förstå hur metodöverbelastning fungerar i python.

offentlig klass Div {public int div (int a, int b) {return (a / b)} public int div (int a, int b, int c) {return ((a + b) / c)} public static tomrum main (String args []) {Div ob = new Div () ob.div (10, 2) ob.div (10, 2, 3)}}
 Produktion: 5 4

I programmet ovan har vi två metoder med samma namn men olika parametrar. Så här fungerar metoden för överbelastning .

Varför metodöverbelastning?

Den största fördelen med att använda metodöverbelastning i Java är att det ger oss friheten att inte definiera en funktion om och om igen för att göra samma sak. I exemplet nedan utför de två metoderna i princip uppdelning, så vi kan ha olika metoder med samma namn men med olika parametrar. Det hjälper också till att sammanställa polymorfism.

Överbelastning av huvudmetoden ():

Följande är ett exempel för att överbelasta huvudmetoden () i Java.

public class Edureka {public static void main (String [] args) {System.out.println ('hej') Edureka.main ('edurekan')} public static void main (String arg1) {System.out.println (' välkommen '+ arg1) Edureka.main (' welcome ',' to edureka ')} public static void main (String arg1, String arg2) {System.out.println (' hej ', + arg1, + arg2)}}
 Produktion: hej välkommen edurekan hej, välkommen till edureka

Exempel på metod för överbelastning

  • Program för att överbelasta statiska metoder i java.
public class Test {public static int func (int a) {return 100} public static char func (int a, int b) {return 'edureka'} public static void main (String args []) {System.out.println ( func (1)) System.out.println (func (1,3))}}
 Produktion: 100 edureka
  • Program för att överbelasta tre metoder med samma namn.
public class Lägg till {public int add (int a, int b) {return (a + b)} public int add (int a, int b, int c) {return (a + b + c)} public double add (double a, dubbel b) {retur (a + b)} offentlig statisk tomrum huvud (Sträng args []) {Lägg till ob = ny Lägg till () ob.add (15,25) ob.add (15,25,35) ob .add (11.5, 22.5)}}
 Produktion: 40 75 34

Vad är metodöverskridande i Java?

Arv i java innebär ett förhållande mellan föräldrar och barnklasser. När båda klasserna innehåller metoder med samma namn och argument eller parametrar är det säkert att en av metoderna kommer att åsidosätta den andra metoden under körning. Metoden som kommer att köras beror på objektet.

Om barnklassobjektet anropar metoden åsidosätter barnklassmetoden den överordnade klassmetoden. Annars, om det överordnade klassobjektet anropar metoden, kommer den överordnade klassmetoden att köras.

Metodöverstyrning hjälper också till att implementera runtime polymorfism i java. Låt oss ta ett enkelt exempel för att förstå hur metodöverstyrning fungerar i java.

hur man installerar php windows
class Parent {void view () {System.out.println ('this is a parent class method)}} class Child extends Parent {void view () {System.out.println (' this is a child class method)}} public static void main (String args []) {Parent ob = new Parent () ob.view () Parent ob1 = new Child () ob1.view ()
 Produktion: detta är en barnklassmetod

Regler för metodöverskridande

  • De åtkomst redigera kan bara tillåta mer åtkomst för den åsidosatta metoden.

  • TILL slutlig metoden stöder inte åsidosättande av metoden.

  • En statisk metod kan inte åsidosättas.

  • Privata metoder kan inte åsidosättas.

  • Returtypen för den åsidosättande metoden måste vara densamma.

  • Vi kan kalla föräldraklassmetoden i den övergripande metoden med hjälp av supernyckelordet.

  • TILL byggare kan inte åsidosättas eftersom en barnklass och en överordnad klass inte kan ha konstruktören med samma namn.

Exempel på metodöverskridande

  • Program för att visa överstyrande med hjälp av super nyckelord
class Parent {void show () {System.out.println ('parent class method')} class Child extends Parent {void show () {super.show () System.out.println ('child class method')} public statisk tomrum huvud (String args []) {Parent ob = new Child () ob.show ()}}
 Produktion: föräldraklass metod barn klass metod

Överbelastning vs Överstyrning: Skillnad mellan metodöverbelastning och metodöverskridande

Följande är de viktigaste skillnaderna mellan metodöverbelastning och åsidosättande i Java.

Metod Överbelastning Metod Åsidosättande
  • Den används för att öka programmets läsbarhet
  • Ger en specifik implementering av metoden som redan finns i föräldraklassen
  • Det utförs inom samma klass
  • Det involverar flera klasser
  • Parametrarna måste vara olika vid överbelastning
  • Parametrarna måste vara desamma vid åsidosättande
  • Är ett exempel på polymorfism i kompileringstid
  • Det är ett exempel på runtime polymorfism
  • Returtyp kan vara annorlunda men du måste också ändra parametrarna.
  • Returtypen måste vara densamma i åsidosättande
  • Statiska metoder kan överbelastas
  • Åsidosättande innebär inte statiska metoder.

I den här bloggen har vi diskuterat metodöverbelastning och metodöverstyrning i detalj. Med medverkan av klasser, föremål och begrepp som arv och polymorfism blir det ganska viktigt att få en klar uppfattning om vad det innebär att överbelasta eller åsidosätta metoder i java.

Java-programmeringsspråk är en topp i objektorienterad programmering och innehåller många applikationer. Med efterfrågan och popularitet måste en blivande Java-utvecklare vara skicklig i programmeringsspråkets grundläggande begrepp. Anmäl dig till Edurekas för att starta ditt lärande.

Har du en fråga till oss? vänligen nämna detta i kommentarsektionen i den här artikeln om 'metodöverbelastning vs metod som åsidosätter i java' så kommer vi tillbaka till dig så snart som möjligt.