Sissejuhatus Java ülekoormamisse ja alistamisse

Uurime kõigepealt seda, mida nimi esmapilgul soovitab. “Ülekoormamine” tähendab: lisakoormuse panemist kellegi originaalsele funktsionaalsusele, eks? Arvestades, et „ülekaal” tähendab: uute funktsioonide pakkumist lisaks kellegi algsele funktsionaalsusele. Selles artiklis vaatleme üksikasjalikult Java ülekoormamist ja alistamist. Jah, ka Java-s rakendatakse neid samamoodi programmiliselt. Vaatame seda ükshaaval.

Ülekoormus Java-s

Kui java klassil on mitu sama nimega, kuid erinevate argumentidega meetodit, siis kutsume seda meetodiks ülekoormamine. Nimi samaks jäädes suurendame lihtsalt programmi koodi loetavust. Näiteks oletame, et peame mõne antud numbri korral lisatoimingu tegema. Ütleme, et meie meetodi nimi on „liitmine ()”. Lisamist saab siin teha kahe, kolme või enama numbri vahel. Seega olenevalt sellest, kui palju numbreid lisaks operatsioonile hõlmab, saame funktsiooni argumente (või parameetreid) muuta. Kuid selle asemel, kui kirjutaksite erineva arvu argumentide jaoks erinevaid meetodeid, on seda keeruline ära tunda, kuna nimi oleks erinev. Seega saavutame ülekoormamise abil oma koodi parema loetavuse. Nüüd on küsimus selles, kuidas me ülekoormuse saavutame?

Vaatame neid ükshaaval koos näidiskoodidega.

Meetod nr 1 - parameetrite arvu muutmisega

Nii et siin teeme mõnede numbrite jaoks täiendava toimingu. Loogem selleks klass, mille nimi on “AdditionOperation”. Selle klassi sees on kaks meetodit nimega „liitmine ()”. Ühes neist meetoditest teostame kahe numbri liitmise. Teises teostame kolme numbri liitmise. Selle saavutame lihtsalt nende meetodite parameetrite arvu muutmisega, kuid hoiame nime samaks. Sel moel koormame siin meetodit „liitmine ()“ üle.

Kood:

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

Väljund:

2. meetod - andmetüübi muutmisega

Nii et siin teeme lisaks operatsioone erinevat tüüpi, näiteks täisarvutüüpide ja topelttüüpide vahel. Loogem selleks klass, mille nimi on “AdditionOperation”. Selles klassis on meil kaks meetodit nimega „liitmine ()”. Ühes neist meetoditest teostame kahe täisarvu liitmise. Teises teostame kahe topelt liitmise. Selle saavutame lihtsalt nende meetodite parameetrite tüübi muutmisega, kuid hoiame nime samaks. Sel moel koormame siin meetodit „liitmine ()“ üle.

Kood:

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

Väljund:

Punktid, mida tuleb ülekoormamise korral tähele panna

  • Java ülekoormamine on põhimõtteliselt “kompileerimise aja polüm”. Meetodi ülekoormamine C # orfismis. Java kompileeritud aja polümorfismi nimetatakse ka staatilise meetodi dispetšiks või varaseks sidumiseks. Mida ma selle kõnepruuki all mõtlen?
  • Polümorfism, nagu nimigi ütleb, on põhimõtteliselt võime esineda mitmel kujul (polü: palju, morph: vorm). Niisiis, ülekoormatud funktsiooni ja objekti ühendamine või sidumine kompileerib siin aja. Seetõttu nimetatakse seda kompileerimisaja polümorfismiks.
  • Põhimõtteliselt toimub funktsiooni sidumine objektiga varakult enne tööaega (st kompileerimise ajal), seetõttu nimetatakse seda ka varajaseks sidumiseks.
  • Staatiline saatmine on teatud tüüpi polümorfism või meetodi edastamine, mis ütleb, kuidas java valib meetodi funktsionaalsuse, mida kompileerimise ajal kasutatakse. (Ma mõtlen, kas see rakendab meie kodeerimise näites kahte või kolme numbrit). Nii on see nimi tuntud ka kui staatiline meetod Dispatch.

Ülekaalus Java

  • Kui java alamklassil või lasteklassil on sama nimega meetod, mis sisaldab samu parameetreid või argumente ja sarnast tagastamise tüüpi kui meetod, mis esineb selle ülemklassis või vanemklassis, siis võime lasteklassi meetodit nimetada oma vanema klassi meetodi ülepakutud meetod.
  • Näiteks oletame, et peame mõne klassi toimingu tegema vastavalt selle klassi tüübile. Ma mõtlen, et kui nimetan vanemklassi meetodit, kuvatakse see sõnum, mis on määratletud vanemklassis. Kuid kui me nimetame lasteklassi meetodiks, alistab see oma vanema klassi kuvasõnumi ja näitab kuvasõnumit, mis on määratletud lasteklassi meetodi sees. Seega, sõltuvalt sellest, millist kuva peame kuvama, võime helistada seotud klassile (vanem või laps). Siin ei muuda me meetodi nime, argumenti ega tagastamise tüüpi. Me lihtsalt muudame meetodi funktsionaalsust lasteklassis. Kuid selle asemel, kui me ei tee ülekaalu, st me ei anna konkreetset lapsemeetodi rakendamist, kuvatakse meetodile helistamise ajal sama sõnum, mis vanemklassis.
  • Koodi kirjutamisel kasutame enne meetodi tühistamist @ Override annotation. Kommentaari @Ollesõit ütleb kompilaatorile, et see meetod peaks alistama ülaklassis deklareeritud meetodi. Kuigi selle kasutamine pole kohustuslik, aitab see vigu vältida. Kui meetodiga, millele on märkusega @Override, ei õnnestu meetodit alistada, genereerib kompilaator vea.

Java meetodi ülimuslikud reeglid

  1. Meetodil peab olema sama nimi kui vanemklassil
  2. Meetodil peab olema sama parameeter kui põhiklassis.
  3. Peab olema IS-A suhe (pärimine).

Kood:

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

Väljund:

Meetodi piirangud ülimuslikud:

  1. Vanemklassi privaatseid meetodeid ei saa mööda vaadata.
  2. Lõplikke meetodeid ei saa mööda vaadata
  3. Staatilisi meetodeid ei saa mööda vaadata

Olulised märkused ülekaalu kohta

  • Java ülekoormamine on põhimõtteliselt “jooksuaja polümorfism”. Käivitusaja polümorfismi javas nimetatakse ka dünaamilise meetodi dispetšiks või hiliseks sidumiseks. Mida see kõnepruuk tähendab?
  • Polümorfism, nagu nimigi ütleb, on põhimõtteliselt võime esineda mitmel kujul (polü: palju, morph: vorm). Niisiis, siin helistatakse objektiga ülekoormatud funktsioonile - tööaeg. Seda nimetatakse jooksuaja polümorfismiks.
  • Põhimõtteliselt tehakse funktsiooni sidumine objektiga hiljaks, st pärast kompileerimist (st käitusaja jooksul); seetõttu nimetatakse seda ka hiliseks köitmiseks.
  • Dünaamiline saatmine on teatud tüüpi polümorfism või meetodi edastamine, mis ütleb, kuidas java valib meetodi funktsionaalsuse tööaja jooksul. Nii on see nimi tuntud ka kui Dynamic method Dispatch.

Järeldus

Sellega lõpetame meie õppimise teemal “Java ülekoormamine ja alistamine”. Kirjutage ülaltoodud näidetes mainitud koodid Java-kompilaatorisse ja kontrollige väljundit. Koodide õppimine on puudulik, kui te ise seda praktiliselt ei tee, kuna see suurendab teie kodeerimisoskust. Head kodeerimist !!

Soovitatavad artiklid

See on Java ülekoormamise ja alistamise juhend. Siin käsitleme ülekoormamise meetodeid koos Java ülekirjutuse reeglite ja piirangutega. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Esmatähtis JavaScriptis
  2. OOPides ülimuslik
  3. Mis on Java geneerilised tooted?
  4. Ülekaalus PHP-s
  5. Pythoni ülekoormamine
  6. Pärand PHP-s
  7. Pythoni pärandi täielik juhend
  8. C-numbri ülekoormamine ja alistamine
  9. Tüübid ja vigade käsitlemine JavaScriptis
  10. Näited ja kuidas Generics töötab C #
  11. Üldamise funktsioon ja reeglid Pythonis

Kategooria: