Uvod u preopterećenje i preglasavanje na Javi

Pogledajmo najprije ono što ime sugerira na prvi pogled. "Preopterećenje" znači: staviti dodatni teret nečijoj originalnoj funkcionalnosti, zar ne? Dok "prevladavanje" znači: pružanje nove funkcionalnosti uz nečiju izvornu funkcionalnost. U ovom ćemo članku detaljno pogledati Preopterećenje i Preklapanje na Javi. Da, i u Javi ovi se implementiraju na isti način programski. Pogledajmo jedan po jedan.

Preopterećenje u Javi

Kad java klasa ima više metoda s istim nazivom, ali s različitim argumentima, to nazivamo metodom Overloading. Zadržavanjem istog imena samo povećavamo čitljivost programskog koda. Na primjer, pretpostavimo da trebate izvesti neke operacije dodavanja na nekim zadanim brojevima. Recimo da je naziv naše metode "dodavanje ()". Ovdje se dodavanje može obaviti između dva broja, tri broja ili više. Dakle, ovisno o tome koliko će brojeva uključivati ​​radnju dodavanja, možemo promijeniti argumente (ili parametre) funkcije. Ali umjesto ovoga, ako biste napisali različite metode za različit broj argumenata, teško će biti prepoznati jer bi ime bilo drugačije. Stoga, preopterećenjem postižemo bolju čitljivost našeg koda. Pa se sada postavlja pitanje kako ćemo postići preopterećenje?

Pogledajmo one po jedan s primjerima kodova.

1. metoda - Promjenom broja parametara

Dakle, ovdje ćemo obaviti dodavanje na nekim brojevima. Za to ćemo stvoriti klasu koja se zove "AdditionOperation". Unutar te klase neka su dvije metode nazvane "dodavanje ()". U jednoj od tih metoda izvest ćemo zbroj dva broja. U drugom ćemo izvesti zbrajanje tri broja. To ćemo postići jednostavnom promjenom broja parametara u tim metodama, ali ime ćemo zadržati isto. Na ovaj način, ovdje smo preopteretili metodu dodavanja ().

Kodirati:

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

Izlaz:

2. metoda - Promjenom vrste podataka

Dakle, ovdje ćemo izvršiti operaciju sabiranja na različitim tipovima, primjerice između cijelog broja i između dvostrukog tipa. Za to ćemo stvoriti klasu koja se zove "AdditionOperation". Unutar te klase neka nam budu dvije metode nazvane "dodavanje ()". U jednoj od tih metoda, izvest ćemo zbrajanje dva cijeli broja. U drugom ćemo izvesti dodavanje dva dvostruka. To ćemo postići jednostavnom promjenom vrste parametara u tim metodama, ali ćemo zadržati naziv isto. Na ovaj način, ovdje smo preopteretili metodu dodavanja ().

Kodirati:

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

Izlaz:

Bodovi za napomenu zbog preopterećenja

  • Preopterećenje javom u osnovi je "polim-vrijeme sastavljanja polimeta Metod preopterećenja u C # orfizmu". Kompilarni vremenski polimorfizam u Javi također se naziva i „statička metoda slanja“ ili „rano vezivanje“. Pa što mislim pod tim žargonom?
  • Polimorfizam, kao što ime sugerira, u osnovi je sposobnost da se poprima više oblika (poli: mnogi, morf: oblik). Dakle, ovdje se povezivanje ili vezanje preopterećene funkcije i objekta vrši vrijeme sastavljanja. Otuda se naziva polimorfizam u vremenu kompilacije.
  • U osnovi se vezanje funkcije za objekt izvodi rano prije pokretanja (tj. Tijekom vremena prevođenja), pa je tako i nazvano "rano vezivanje".
  • Statička dispeč je vrsta polimorfizma ili načina otpreme koja govori kako će java odabrati koja će se funkcionalnost metode koristiti za vrijeme kompilacije. (Mislim, hoće li izvesti dodavanje dva broja ili tri broja u našem primjeru kodiranja). Dakle, naziv je poznat i kao statička metoda Dispatch.

Prevladavanje u Javi

  • Kada java podklasa ili podređena klasa ima metodu koja je istog naziva i sadrži iste parametre ili argumente i sličan tip povratka kao metoda koja je prisutna u njegovom superklasi ili roditeljskoj klasi, tada možemo metodu podređene klase nazvati kao nadjačana metoda metode roditeljske klase.
  • Na primjer, pretpostavimo da moramo izvesti neke radnje na zaslonu u skladu s vrstom klase. Mislim, ako nazovem metodu roditeljske klase, ona će prikazati poruku koja je definirana u roditeljskoj klasi. No, kada nazovemo metodu dječje klase, ona će nadjačati zaslonsku poruku roditeljske klase i prikazat će prikaznu poruku koja je definirana unutar metode podređene klase. Stoga, ovisno o tome koji prikaz trebamo pokazati, možemo nazvati odnosnu klasu (roditelja ili djeteta). Ovdje ne mijenjamo ime metode, argument i vrstu povratka. Upravo mijenjamo funkcionalnost metode u dječjoj klasi. No umjesto toga, ako ne učinimo prevladavanje, tj. Ne dajemo specifičnu implementaciju podređene metode, tada će, dok zovemo metodu, prikazati istu poruku kao u roditeljskoj klasi.
  • Dok pišemo kôd, upotrijebit ćemo napomene @ Override prije nego što se metoda nadjača. Bilješka @Override kaže prevoditelju da metoda treba nadjačati metodu koja je deklarirana u pretklasi. Iako to nije obavezno, to pomaže u sprečavanju pogrešaka. Ako metoda koja je označena s @Override ne nadjača metodu, prevoditelj generira pogrešku.

Pravila za prevladavanje Java metoda

  1. Metoda mora imati isti naziv kao u roditeljskoj klasi
  2. Metoda mora imati isti parametar kao u roditeljskoj klasi.
  3. Mora postojati odnos IS-A (nasljeđivanje).

Kodirati:

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

Izlaz:

Ograničenja u načinu prevladavanja:

  1. Privatne metode nadređene klase ne mogu se nadjačati.
  2. Konačne metode se ne mogu nadjačati
  3. Statičke metode se ne mogu zaobići

Bodovi koji će se primijetiti za poništavanje

  • Preopterećenje javom u osnovi je "polimorfizam u tijeku rada". Polimorfizam vremena provođenja u javi također se naziva i "Dinamička metoda slanja" ili "Kasno vezivanje". Pa što se podrazumijeva pod tim žargonom?
  • Polimorfizam, kao što ime sugerira, u osnovi je sposobnost da se u mnogim oblicima (poly: mnogi, morph: oblik). Dakle, ovdje poziv na preopterećenu funkciju s objektom vrši se vrijeme izvođenja. Otuda se naziva polimorfizam vremena izvođenja.
  • U osnovi, vezanje funkcije za objekt vrši se kasno, što je nakon sastavljanja (tj. Tijekom vremena izvođenja); zbog toga je također nazvan "Kasno vezivanje".
  • Dinamička dispeč je vrsta polimorfizma ili načina otpreme koja govori kako će java odabrati koja će se funkcionalnost metode koristiti u vremenu izvođenja. Dakle, naziv je poznat i kao Dinamička metoda Dispatch.

Zaključak

Ovim zaključujemo naše učenje o temi "Preopterećenje i prevladavanje u Javi". Napišite kodove spomenute u gornjim primjerima u java prevodilac i provjerite izlaz. Učenje kodova biće nepotpuno ako se sami ne bavite time, što će poboljšati vaše vještine kodiranja. Sretno kodiranje !!

Preporučeni članci

Ovo je vodič za preopterećenje i preglasavanje na Javi. Ovdje raspravljamo o metodama u Preopterećenju zajedno s pravilima i ograničenjima Overriding u Javi. Možete i proći naše druge predložene članke da biste saznali više -

  1. Poništavanje JavaScript-a
  2. Prevladavanje u OOP-ovima
  3. Što su generički na Javi?
  4. Prevladavanje u PHP-u
  5. Python preopterećenje
  6. Nasljeđivanje u PHP-u
  7. Kompletan vodič za nasljeđivanje Pythona
  8. Preopterećenje i preglasavanje u C #
  9. Vrste i rukovanje pogreškama u JavaScript-u
  10. Primjeri i način na koji generički djeluju u C #
  11. Funkcija i pravila preglasavanja u Pythonu

Kategorija: