Introducere în suprasarcină și supraîncărcare în Java

Să analizăm mai întâi ce sugerează numele la prima vedere. „Supraîncărcare” înseamnă: a pune o povară suplimentară asupra funcționalității inițiale a oricui, nu? Întrucât, „Suprasolicitare” înseamnă: furnizarea de noi funcționalități pe lângă funcționalitatea inițială a oricui. În acest articol, vom analiza în detaliu supraîncărcarea și supraîncărcarea în Java. Da, și în Java, acestea sunt implementate în același mod în mod programatic. Haideți să aruncăm o privire unul asupra unuia.

Supraîncărcare în Java

Atunci când o clasă java are mai multe metode cu același nume, dar cu argumente diferite, o numim Suprasarcină metodă. Păstrând același nume, doar creștem lizibilitatea codului programului. De exemplu, să presupunem că trebuie să efectuăm unele operații de adăugare pe unele numere date. Să spunem că numele metodei noastre este „adăugare ()”. Aici, adăugarea se poate face între două numere, trei numere sau mai multe. Prin urmare, în funcție de câte numere vor implica o operație suplimentară, putem schimba argumentele (sau parametrii) funcției. Dar, în loc de asta, dacă ai scrie metode diferite pentru numărul diferit de argumente, va fi dificil să recunoști, deoarece numele ar fi diferit. Prin urmare, prin supraîncărcare, obținem o mai bună lizibilitate a codului nostru. Acum, întrebarea este cum vom realiza supraîncărcarea?

Să ne uităm la cele cu unul cu coduri de exemplu.

Metoda # 1 - Modificând numărul de parametri

Așadar, aici, vom efectua operațiuni suplimentare pe unele numere. Pentru aceasta, să creăm o clasă numită „AdditionOperation”. În cadrul clasei, să avem două metode denumite „adiție ()”. Într-una din aceste metode, vom efectua o adăugare a două numere. În celălalt, vom efectua adăugarea a trei numere. Acest lucru îl vom realiza prin simpla schimbare a numărului de parametri în aceste metode, dar vom păstra același nume. În acest fel, supraîncărcăm metoda „adăugare ()” aici.

Cod:

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.
)
)

ieşire:

Metoda 2 - Modificând tipul de date

Aici, vom face operații de adăugare pe diferite tipuri, de exemplu, între tipul întreg și între tipul dublu. Pentru aceasta, să creăm o clasă numită „AdditionOperation”. În cadrul clasei, să avem două metode denumite „adiție ()”. Într-una din aceste metode, vom efectua adăugarea a două numere întregi. În cealaltă, vom efectua adăugarea a două duble. Acest lucru îl vom realiza prin simpla schimbare a tipului de parametri în aceste metode, dar vom păstra același nume. În acest fel, supraîncărcăm metoda „adăugare ()” aici.

Cod:

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.
)
)

ieşire:

Puncte care trebuie notate pentru supraîncărcare

  • Supraîncărcarea în java este, practic, o „supraîncărcare a polimmeticii în timp compilat în orfism C #”. Polimorfismul în timp-compilare în java este, de asemenea, numit „Dispeceratul metodei statice” sau „Legarea timpurie”. Deci, ce vreau să spun prin acea argotă?
  • Polimorfismul, după cum sugerează și numele, este practic o capacitate de a lua multe forme (poli: multe, morf: formă). Așadar, aici legarea sau legarea funcției supraîncărcate și a obiectului este făcută timp de compilare. De aici se numește polimorfism compile-time.
  • Practic aici, legarea funcției la obiect se face mai devreme înainte de timpul de execuție (adică în timpul compilării), de aceea este denumită și „Legare timpurie”.
  • Dispeceratul static este un tip de polimorfism sau de expediere a metodei, care indică modul în care java va selecta ce funcționalitate a metodei va fi utilizată în timp de compilare. (Adică, dacă se va adăuga două numere sau trei numere în exemplul nostru de codare). Deci numele este cunoscut și sub numele de Metoda statică Dispecerat.

Suprasolicitare în Java

  • Când o subclasă java sau o clasă copil are o metodă care are același nume și conține aceiași parametri sau argumente și un tip de returnare similar ca o metodă care este prezentă în superclasa sau clasa părinte, atunci putem numi metoda clasei copil ca o metodă suprasolicitată a metodei clasei sale părinte.
  • De exemplu, să presupunem că trebuie să efectuăm unele operații de afișare în funcție de tipul clasei sale. Adică, dacă numesc metoda unei clase de părinți, aceasta va afișa un mesaj care este definit într-o clasă părinte. Dar, atunci când apelăm la metoda clasei copil, aceasta va trece peste mesajul de afișare al clasei sale părinte și va afișa mesajul afișat care este definit în cadrul metodei clasei copil. Prin urmare, în funcție de ecranul pe care trebuie să îl afișăm, putem apela clasa aferentă (părinte sau copil). Aici nu schimbăm numele metodei, argumentul și tipul de returnare. Modificăm doar funcționalitatea metodei în clasa de copii. Dar, în loc de asta, dacă nu facem o suprasolicitare, adică nu oferim implementarea specifică a metodei copilului, atunci în timp ce apelăm la metodă, aceasta va afișa același mesaj ca și prezent într-o clasă părinte.
  • În timp ce scriem codul, vom folosi adnotarea @ Înlocuire înainte ca metoda să fie anulată. @Onotarea adnotării spune compilatorului că metoda ar trebui să înlocuiască o metodă declarată într-o superclasă. Deși nu este obligatorie utilizarea acestui lucru, ajută la prevenirea erorilor. Dacă o metodă care este adnotată cu @Override nu reușește să înlocuiască o metodă, compilatorul generează o eroare.

Reguli pentru suprasolicitarea metodei Java

  1. Metoda trebuie să aibă același nume ca în clasa părinte
  2. Metoda trebuie să aibă același parametru ca în clasa părinte.
  3. Trebuie să existe o relație IS-A (moștenire).

Cod:

//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();
)
)

ieşire:

Limitări ale metodei Suprasolicitare:

  1. Metodele private ale clasei părinte nu pot fi anulate.
  2. Metodele finale nu pot fi anulate
  3. Metodele statice nu pot fi ignorate

Puncte de notat pentru suprasolicitare

  • Supraîncărcarea în java este practic un „polimorfism al timpului de rulare”. Polimorfismul timpului de rulare în java este, de asemenea, numit „Metoda dinamică Dispecerat” sau „Obligare târzie”. Deci, ce se înțelege prin acea argotă?
  • Polimorfismul, după cum sugerează și numele, este practic o capacitate de a lua multe forme (poli: multe, morf: formă). Deci, aici se apelează la o funcție supraîncărcată cu obiectul se face timpul de rulare. De aici se numește polimorfismul timpului de rulare.
  • Practic aici, legarea funcției la obiect se face târziu, care este după compilare (adică în timpul rulării); de aceea este denumit și „Legătură târzie”.
  • Dispeceratul dinamic este un tip de polimorfism sau de expediere a metodei care indică modul în care java va selecta ce funcționalitate a metodei va fi utilizată în timpul de rulare. Deci numele este cunoscut și sub numele de Metoda dinamică Dispatch.

Concluzie

Aceasta încheie învățarea noastră despre subiectul „Supraîncărcarea și supraîncărcarea în Java”. Scrieți codurile menționate în exemplele de mai sus în compilatorul java și verificați ieșirea. Învățarea codurilor va fi incompletă dacă nu veți face acest lucru singur, deoarece acest lucru vă va îmbunătăți abilitățile de codare. Codificare fericită !!

Articole recomandate

Acesta este un ghid pentru supraîncărcare și supraîncărcare în Java. Aici vom discuta despre metodele de suprasarcină împreună cu regulile și limitările de suprasolicitare în Java. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Suprasolicitare în JavaScript
  2. Suprafață în OOP
  3. Ce sunt Generics în Java?
  4. Suprasolicitare în PHP
  5. Supraîncărcarea Python
  6. Moștenire în PHP
  7. Ghid complet de moștenire din Python
  8. Supraîncărcare și suprasolicitare în C #
  9. Tipuri și erori de gestionare în JavaScript
  10. Exemple și mod de funcționare a genericilor în C #
  11. Funcția și regulile de suprasolicitare în Python