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 -banJava 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
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 DavidsonIratkozzon 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