Polimorfizmus a Java -ban: Hogyan lehet túlterhelni vagy felülbírálni a módszereket

Polimorfizmus a Java -ban: Hogyan lehet túlterhelni vagy felülbírálni a módszereket

A módszer túlterhelése és felülbírálása az a két módszer, amellyel a Java demonstrálja a polimorfizmust. A polimorfizmus két görög szó kombinációjából származik: a 'poly' sokat jelent és a 'morf' jelentése forma. Ezért a polimorfizmus lehetővé teszi, hogy a módszerek sokféle formát ölthessenek.





Kövesse ezt az útmutatót, hogy megtudja, hogyan kell túlterhelni vagy felülbírálni a Java módszereket.





Mi a módszer túlterhelése?

A „módszer túlterhelése” az azonos nevű osztály különböző metódusainak meghatározására vonatkozik. A módszereknek eltérő aláírással kell rendelkezniük. A módszer aláírása a módszer nevének és a paraméterlistának a kombinációja. Nem tartalmazza a visszatérési típust.



A fordító tudja, hogy melyik módszert kell használni, ellenőrizve a paraméterek típusát, számát és sorrendjét.

Összefüggő: Az öröklődés feltárása a Java programozási nyelvben



A módszer túlterhelése a fordítási idő polimorfizmusát mutatja. A fordítási idejű polimorfizmus azt jelenti, hogy a Java fordító futás közben megköti az objektumot a funkcionalitásához. Ennek érdekében a fordító ellenőrzi a módszer aláírásait.

Ez a fajta polimorfizmus statikus vagy korai kötésként is ismert.





Lásd az alábbi példát a túlterhelési módszerre:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Kimenet:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

A fenti kód bemutatja, hogyan szerezhet be különböző típusú kockákat ( int , kettős , úszó ) ugyanazzal a módszerrel.

Általában a metódustúlterhelést használjuk a hasonló paramétertípusokkal rendelkező módszerek meghatározására.

Mi a módszer felülbírálása?

Ez egy módszer eltérő megvalósítására vonatkozik egy alosztályban. A metódust a szülőosztályban már definiálni kellett.

A felülbíráló metódusnak (azaz az alosztályban lévőnek) ugyanazzal a módszer aláírással kell rendelkeznie, mint a szuperosztályban. A felülbírálási módszer visszatérési típusa lehet ugyanaz vagy altípusa, mint a szuperosztálynak.

A felülbírálást általában az objektum viselkedésének egy konkrét megvalósításának az alosztályba való beépítésére használják.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Kimenet:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

A fenti példa bemutatja a módszer módját üzenet() felül van írva az alosztályokban Megtakarítás és FixedDeposit . Különböző üzenetek jelennek meg a megtakarítási számlával rendelkező és a rögzített letéti számlával rendelkező bankszámlatulajdonosok számára.

Összefüggő: Amit a karakterláncok Java használatáról tudni kell

Érdemes megjegyezni azt is, hogy a módszer felülbírálása futásidejű polimorfizmust vagy dinamikus módszer -elküldést mutat. Ez azt jelenti, hogy a meghívandó metódus futás közben oldódik meg, nem pedig fordításkor.

Annak elkerülése érdekében, hogy egy módszer felülbírálásra kerüljön, használja a kulcsszót végső .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Amikor egy alosztály megpróbálja felülbírálni, fordítási hiba lép fel.

Ideális esetben a konstruktoron belül meghívott összes metódusnak kell lennie végső . Ennek célja az alosztályok által okozott nem kívánt változtatások elkerülése.

Néha szükség lehet egy felülbírált metódus elérésére a felülbírálási módszeren belül. Használhatja a kulcsszót szuper majd a pontkezelő ( . ) és a módszer nevét ilyen esetben.

Tekintsük a szuperklasszist Állat .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Az alábbiakban egy alosztály, az ún Hal , ez felülbírálja mozog() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Kimenet:

nézz youtube videókat egyszerre
I can swim.
I can move.

Egy módszer felülbírálásakor figyelembe kell vennie a használt hozzáférés -módosítót is. Az alosztály módosítójának ugyanolyan láthatóságúnak vagy magasabbnak kell lennie, mint az alaposztályban. Például, ha az alaposztály metódusát úgy határozzuk meg védett , akkor a felülbíráló módszer akár lehet védett vagy nyilvános .

Egyszerű kód polimorfizmussal

A módszer felülbírálása és túlterhelése fontos a kód egyszerűsítése szempontjából, az egyszerű kód pedig jó gyakorlat.

Miért? Képzeljen el egy összetett kódbázist, amely több be- és kimenettel rendelkezik, mint a Grand Central Station. Most képzeld el, hogy egy pusztító hiba kezd elpusztítani a kemény munkádat a szemed előtt. El kell különítenie a fertőzés forrását, és gyorsan meg kell tennie.

Sok sikert, nem egyszerűsítette le a kódját ... Most valódi leckét kap a titkosításról. Hatékony adatstruktúrák alkalmazása és a kód lerövidítésére irányuló lehetőségek megtétele (például a DRY szem előtt tartása) a legjobb védekezés az ilyen helyzetekkel szemben.

A Java tanulási listájának következő lépéseként tömbökkel kell dolgoznia. Ezek fontos adatstruktúrák az adatpontok kötegeinek tárolására.

Részvény Részvény Csipog Email Műveletek létrehozása és végrehajtása tömbökön Java -ban

Java tanulás? Hagyja, hogy a tömbök könnyedén kezeljék adatait.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Jáva
  • Kódolási oktatóanyagok
A szerzőről Jerome Davidson(22 cikk megjelent)

Jerome a MakeUseOf munkatársa. A programozásról és a Linuxról szóló cikkekkel foglalkozik. Ő is kriptorajongó, és mindig figyelemmel kíséri a kriptoipart.

További Jerome Davidson

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide