Introduktion til overbelastning og overstyring i Java

Lad os først undersøge, hvad navnet antyder med dets første øjekast. "Overbelastning" betyder: at lægge en vis ekstra byrde på nogens originale funktionalitet, ikke? Mens "Overriding" betyder: at give ny funktionalitet ud over nogens originale funktionalitet. I denne artikel skal vi se på overbelastning og overstyring i Java i detaljer. Ja, også i Java implementeres disse på samme måde programmatiske. Lad os se nærmere på det en efter en.

Overbelastning i Java

Når en java-klasse har flere metoder med samme navn, men med forskellige argumenter, kalder vi det Method Overloading. Ved at holde navnet det samme øger vi blot læsbarheden af ​​programkoden. Antag f.eks., At vi er nødt til at udføre en vis tilføjelsesproces på nogle givne numre. Lad os sige, at navnet på vores metode er "tilføjelse ()". Her kan tilføjelse ske mellem to tal, tre tal eller mere. Afhængig af hvor mange numre der vil involvere i tillægsdrift, kan vi derfor ændre argumenter (eller parametre) for funktionen. Men i stedet for dette, hvis du skriver forskellige metoder til det forskellige antal argumenter, vil det være vanskeligt at genkende, da navnet ville være anderledes. Derfor opnår vi en bedre læsbarhed af vores kode ved overbelastning. Så nu er spørgsmålet, hvordan skal vi opnå overbelastning?

Lad os se på dem én ad gangen med eksempelkoder.

Metode nr. 1 - Ved at ændre antallet af parametre

Så her vil vi udføre additionsoperation på nogle numre. Lad os oprette en klasse kaldet "AdditionOperation" til dette. Inde i denne klasse, lad os have to metoder, der hedder “tilføjelse ()”. I en af ​​disse metoder udfører vi en tilføjelse af to tal. I den anden udfører vi tilføjelsen af ​​tre numre. Dette opnår vi ved blot at ændre antallet af parametre i disse metoder, men vi vil holde navnet det samme. På denne måde overbelaster vi metoden “tilføjelse ()” 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.
)
)

Produktion:

Metode nr. 2 - Ved at ændre datatypen

Så her vil vi udføre additionsoperationer på forskellige typer, for eksempel mellem heltaltype og mellem dobbeltype. Lad os oprette en klasse kaldet "AdditionOperation" til dette. Lad os inde i denne klasse to metoder, der hedder “tilføjelse ()”. I en af ​​disse metoder udfører vi tilføjelsen af ​​to heltal. I den anden udfører vi tilføjelsen af ​​to dobbelt. Dette opnår vi ved blot at ændre typen af ​​parametre i disse metoder, men vi vil holde navnet det samme. På denne måde overbelaster vi metoden “tilføjelse ()” 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.
)
)

Produktion:

Punkter, der skal bemærkes for overbelastning

  • Overbelastning i java er dybest set en “compile-time polymMethod Overloading in C # orphism”. Polymorfisme i kompileringstid i java kaldes også "Static method Dispatch" eller "Early binding". Så hvad mener jeg med den jargon?
  • Polymorfisme, som navnet antyder, er dybest set en evne til at antage mange former (poly: mange, morf: form). Så her linkes eller bindes den overbelastede funktion og objektet til at samle tid. Derfor kaldes det polymorfisme til kompileringstid.
  • Grundlæggende her udføres bindingen af ​​funktion til objekt tidligt før kørselstid (dvs. under kompileringstid), og derfor kaldes den også som "Tidlig binding".
  • Statisk forsendelse er en type polymorfisme eller metodeforsendelse, der fortæller, hvordan java vælger, hvilken funktionalitet af metoden der skal bruges i kompileringstiden. (Jeg mener, om det vil udføre tilføjelse af to tal eller tre numre i vores kodningseksempel). Så navnet er også kendt som Static-metoden Dispatch.

Overstyring i Java

  • Når en java-underklasse eller barneklasse har en metode, der har samme navn og indeholder samme parametre eller argumenter og lignende returtype som en metode, der er til stede i dens superklasse eller forældreklasse, kan vi kalde metoden for barneklassen som en overstyret metode til metoden for dens overordnede klasse.
  • Antag f.eks., At vi er nødt til at udføre visningsoperationer i henhold til dens klassetype. Jeg mener, hvis jeg kalder metoden for en forældreklasse, viser den en meddelelse, der er defineret i en overordnet klasse. Men når vi kalder metoden for barneklassen, tilsidesætter den displaymeddelelsen for dets forældreklasse og viser den displaymeddelelse, der er defineret inden for metoderne i barneklassen. Afhængig af hvilket display vi har brug for, kan vi derfor kalde den relaterede klasse (forælder eller barn). Her ændrer vi ikke metodenavn, argument og returtype. Vi ændrer bare funktionen af ​​metoden i børneklasse. Men i stedet for dette, hvis vi ikke tilsidesætter, dvs. vi giver ikke den specifikke implementering af underordnet metode, så mens den ringer til metoden, vil den vise den samme meddelelse som den findes i en forældreklasse.
  • Når vi skriver kode, bruger vi @ Overstyr annotering inden metoden, der skal tilsidesættes. @Orride-annotation fortæller kompilatoren, at metoden skal tilsidesætte en metode, der blev erklæret i en superklasse. Selvom det ikke er obligatorisk at bruge dette, hjælper det med at forhindre fejl. Hvis en metode, der er kommenteret med @Override, ikke tilsidesætter en metode, genererer compileren en fejl.

Regler for tilsidesættelse af Java-metode

  1. Metoden skal have det samme navn som i forældreklassen
  2. Metoden skal have den samme parameter som i den overordnede klasse.
  3. Der skal 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();
)
)

Produktion:

Begrænsninger i metodeoverskridelse:

  1. Privatmetoder for forældreklassen kan ikke tilsidesættes.
  2. Endelige metoder kan ikke tilsidesættes
  3. Statiske metoder kan ikke tilsidesættes

Punkter, der skal bemærkes for tilsidesættelse

  • Overbelastning i java er dybest set en "polymorfisme af kørselstid". Polymorfisme af kørselstid i java kaldes også "Dynamic method Dispatch" eller "Sen binding". Så hvad menes med denne jargon?
  • Polymorfisme, som navnet antyder, er dybest set en evne til at antage mange former (poly: mange, morf: form). Så her kaldes en overbelastet funktion med objektet kørselstiden. Derfor kaldet runtime polymorfisme.
  • Grundlæggende her udføres bindingen af ​​funktion til objekt sent, hvilket er efter kompilering (dvs. under kørselstid); derfor kaldes den også "Sen binding".
  • Dynamisk forsendelse er en type polymorfisme eller metodeforsendelse, der fortæller, hvordan java vælger, hvilken funktionalitet af metoden der skal bruges i kørselstid. Så navnet kaldes også Dynamic method Dispatch.

Konklusion

Dette afslutter vores indlæring af emnet "Overbelastning og overstyring i Java". Skriv de koder, der er nævnt i ovenstående eksempler, i java-kompilatoren, og kontroller output. Indlæring af koder vil være ufuldstændig, hvis du ikke selv gør hands-on, da dette forbedrer dine kodningsevner. Glad kodning !!

Anbefalede artikler

Dette er en guide til overbelastning og tilsidesættelse i Java. Her diskuterer vi metoder i Overbelastning sammen med regler og begrænsninger for Overriding i Java. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Overskydende i JavaScript
  2. Overstyring i OOP'er
  3. Hvad er generikere i Java?
  4. Overstyring i PHP
  5. Python-overbelastning
  6. Arv i PHP
  7. Komplet guide til arv i Python
  8. Overbelastning og tilsidesættelse i C #
  9. Typer og håndteringsfejl i JavaScript
  10. Eksempler og hvordan generics fungerer i C #
  11. Funktion og regler for tilsidesættelse i Python

Kategori: