Introduksjon til overbelastning og overstyring i Java

La oss først se på hva navnet antyder ved første øyekast. "Overbelastning" betyr: legge noen ekstra belastning på noens originale funksjonalitet, ikke sant? Mens "Overriding" betyr: gi ny funksjonalitet i tillegg til noens originale funksjonalitet. I denne artikkelen vil vi se på overbelastning og overstyring i Java i detalj. Ja, også i Java blir disse implementert på samme måte programmatisk. La oss se nærmere på det en etter en.

Overbelastning i Java

Når en java-klasse har flere metoder med samme navn, men med forskjellige argumenter, kaller vi det Method Overloading. Ved å holde navnet samme øker vi bare lesbarheten til programkoden. Anta for eksempel at vi må utføre noen tilleggsoperasjoner på noen gitte tall. La oss si at navnet på metoden vår er "tillegg ()". Her kan tillegg gjøres mellom to tall, tre tall eller mer. Avhengig av hvor mange tall som vil involvere i tilleggsoperasjon, kan vi derfor endre argumentene (eller parametrene) for funksjonen. Men i stedet for dette, hvis du skriver forskjellige metoder for det forskjellige antall argumenter, vil det være vanskelig å gjenkjenne ettersom navnet ville være annerledes. Ved å overbelaste oss oppnår vi derfor bedre lesbarhet av koden vår. Så nå er spørsmålet hvordan skal vi oppnå overbelastning?

La oss se på de ene etter én med eksempelkoder.

Metode nr. 1 - Ved å endre antall parametere

Så her vil vi gjøre tilleggsoperasjoner på noen tall. La oss lage en klasse som heter “AdditionOperation” for dette. Inne i den klassen, la oss ha to metoder som heter “tillegg ()”. I en av disse metodene vil vi utføre et tillegg av to tall. I den andre vil vi utføre tillegg av tre tall. Dette vil vi oppnå ved ganske enkelt å endre antall parametere i disse metodene, men vi vil beholde navnet det samme. På denne måten overbelaster vi metoden “tillegg ()” her.

Kode:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

Produksjon:

Metode nr. 2 - Ved å endre datatypen

Så her vil vi gjøre tilleggsoperasjoner på forskjellige typer, for eksempel mellom heltallstype og mellom dobbelttype. La oss lage en klasse som heter “AdditionOperation” for dette. Inne i den klassen, la oss ha to metoder som heter “tillegg ()”. I en av disse metodene vil vi utføre tillegg av to heltall. I den andre vil vi utføre tillegg av to doble. Dette vil vi oppnå ved ganske enkelt å endre typen parametere i disse metodene, men vi vil beholde navnet det samme. På denne måten overbelaster vi metoden “tillegg ()” her.

Kode:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

Produksjon:

Poeng som skal noteres for overbelastning

  • Overbelastning i java er i utgangspunktet en "kompileringstid-polymmetode Overbelastning i C # orphism". Kompilertidspolymorfisme i java kalles også “Static method Dispatch” eller “Early binding”. Så hva mener jeg med den sjargongen?
  • Polymorfisme, som navnet antyder, er i utgangspunktet en evne til å ta mange former (poly: mange, morf: form). Så her kobles eller bindes den overbelastede funksjonen og objektet til å samle tid. Derfor kalles det kompilertidspolymorfisme.
  • I utgangspunktet gjøres bindingen av funksjon til objekt tidlig før kjøretid (dvs. under kompileringstid), og dermed blir den også kalt "Tidlig binding".
  • Statisk utsendelse er en type polymorfisme eller metodeforsendelse som forteller hvordan java vil velge hvilken funksjonalitet av metoden som skal brukes i kompileringstid. (Jeg mener, om det vil utføre tillegg av to tall eller tre tall i kodingseksemplet vårt). Så navnet er også kjent som Static-metoden Dispatch.

Overstyrer i Java

  • Når en java-underklasse eller barneklasse har en metode som har samme navn og inneholder samme parametere eller argumenter og lignende returtype som en metode som er til stede i superklassen eller foreldreklassen, kan vi kalle metoden til barneklassen som en overstyret metode for metoden til foreldreklassen.
  • Anta for eksempel at vi må utføre en visningsoperasjon i henhold til klassetypen. Jeg mener, hvis jeg kaller metoden for en foreldreklasse, vil den vise en melding som er definert i en foreldreklasse. Men når vi kaller metoden til barneklassen, vil den overstyre visningsmeldingen til foreldreklassen og vise skjermmeldingen som er definert i metoden til barneklassen. Avhengig av hvilken skjerm vi trenger å vise, kan vi derfor ringe den relaterte klassen (foreldre eller barn). Her endrer vi ikke metodenavn, argument og returtype. Vi endrer bare funksjonaliteten til metoden i barneklasse. Men i stedet for dette, hvis vi ikke overstyrer, dvs. at vi ikke gir den konkrete implementeringen av barnemetode, vil den, mens vi kaller metoden, vise den samme meldingen som til stede i en foreldreklasse.
  • Når vi skriver kode, bruker vi @ Overstyr merknad før metoden som skal overstyres. @Override-kommentar forteller kompilatoren at metoden er ment å overstyre en metode som ble erklært i en superklasse. Selv om det ikke er obligatorisk å bruke dette, hjelper det å forhindre feil. Hvis en metode som er kommentert med @Override ikke overstyrer en metode, genererer kompilatoren en feil.

Regler for overskridelse av Java-metode

  1. Metoden må ha samme navn som i foreldreklassen
  2. Metoden må ha samme parameter som i foreldreklassen.
  3. Det må være et IS-A-forhold (arv).

Kode:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

Produksjon:

Begrensninger i metodeoverskridelse:

  1. Privatmetoder for foreldreklassen kan ikke overstyres.
  2. Endelige metoder kan ikke overstyres
  3. Statiske metoder kan ikke overstyres

Poeng som skal noteres for å overstyre

  • Overbelastning i java er i utgangspunktet en "Run time polymorfisme". Polymorfisme i løpet av java kalles også "Dynamic method Dispatch" eller "Sen binding". Så hva menes med den sjargongen?
  • Polymorfisme, som navnet antyder, er i utgangspunktet en evne til å ta mange former (poly: mange, morf: form). Så her kaller en overbelastet funksjon med objektet kjøringen. Derfor kalt run time polymorfisme.
  • I utgangspunktet gjøres bindingen av funksjon til objekt sent som er etter kompilering (dvs. under kjøretid); derfor blir det også kalt "Sen binding".
  • Dynamisk utsendelse er en type polymorfisme eller metodeforsendelse som forteller hvordan java vil velge hvilken funksjonalitet av metoden som skal brukes i kjøretid. Så navnet er også kjent som Dynamic method Dispatch.

Konklusjon

Dette avslutter læringen om emnet "Overbelastning og overstyring i Java". Skriv kodene nevnt i eksemplene ovenfor i javakompilatoren og sjekk utgangen. Læring av koder vil være ufullstendig hvis du ikke gjør deg praktisk, da dette vil forbedre kodingsevnen din. Glad koding !!

Anbefalte artikler

Dette er en guide til overbelastning og overstyring i Java. Her diskuterer vi metoder i Overbelastning sammen med regler og begrensninger for Overriding i Java. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -

  1. Overstyrer i JavaScript
  2. Overstyring i OOP
  3. Hva er Generics i Java?
  4. Overstyring i PHP
  5. Python-overbelastning
  6. Arv i PHP
  7. Komplett guide til arv i Python
  8. Overbelastning og overstyring i C #
  9. Typer og håndteringsfeil i JavaScript
  10. Eksempler og hvordan generikker fungerer i C #
  11. Funksjon og regler for overstyring i Python