- Pochopenie problému bez prepísania metódy
- Môžeme prepísať statickú metódu
- Preťažovanie metódy vs. prepisovanie metódy
Ak má podtrieda (podradená trieda) rovnakú metódu ako deklarovaná v rodičovskej triede, je známa ako prepísanie metódy v jazyku Java .
Inými slovami, ak podtrieda poskytuje špecifickú implementáciu metódy, ktorá bola deklarovaná jednou z jej rodičovských tried, je známa ako prepísanie metódy.
Použitie prepísania metódy Java
- Prepísanie metódy sa používa na zabezpečenie špecifickej implementácie metódy, ktorá je už poskytovaná jej nadtriedou.
- Pre polymorfizmus za behu sa používa prepísanie metódy
Pravidlá pre prepisovanie metódy Java
- Metóda musí mať rovnaký názov ako v rodičovskej triede
- Metóda musí mať rovnaký parameter ako v rodičovskej triede.
- Musí existovať vzťah IS-A (dedičstvo).
Pochopenie problému bez prepísania metódy
Pochopme problém, s ktorým sa môžeme stretnúť v programe, ak nepoužijeme prepísanie metódy.
//Java Program to demonstrate why we need method overriding //Here, we are calling the method of parent class with child //class object. //Creating a parent class class Vehicle{ void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike extends Vehicle{ public static void main(String args[]){ //creating an instance of child class Bike obj = new Bike(); //calling the method with child class instance obj.run(); } }Vyskúšajte to
Výkon:
Vehicle is running
Problém je v tom, že musím poskytnúť špecifickú implementáciu metódy run() v podtriede, a preto používame prepísanie metódy.
Príklad prepísania metódy
V tomto príklade sme definovali metódu run v podtriede, ako je definovaná v rodičovskej triede, ale má určitú špecifickú implementáciu. Názov a parameter metódy sú rovnaké a medzi triedami existuje vzťah IS-A, takže existuje prepísanie metódy.
//Java Program to illustrate the use of Java Method Overriding //Creating a parent class. class Vehicle{ //defining a method void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike2 extends Vehicle{ //defining the same method as in the parent class void run(){System.out.println('Bike is running safely');} public static void main(String args[]){ Bike2 obj = new Bike2();//creating object obj.run();//calling method } }Vyskúšajte to
Výkon:
Bike is running safely
Skutočný príklad prepisovania metódy Java
Zvážte scenár, v ktorom je Banka triedou, ktorá poskytuje funkcie na získanie úrokovej sadzby. Úroková sadzba sa však v jednotlivých bankách líši. Napríklad banky SBI, ICICI a AXIS by mohli poskytnúť úrokovú sadzbu 8 %, 7 % a 9 %.
Prepísanie metódy Java sa väčšinou používa v Runtime Polymorphism, o ktorom sa dozvieme na ďalších stránkach.
//Java Program to demonstrate the real scenario of Java Method Overriding //where three classes are overriding the method of a parent class. //Creating a parent class. class Bank{ int getRateOfInterest(){return 0;} } //Creating child classes. class SBI extends Bank{ int getRateOfInterest(){return 8;} } class ICICI extends Bank{ int getRateOfInterest(){return 7;} } class AXIS extends Bank{ int getRateOfInterest(){return 9;} } //Test class to create objects and call the methods class Test2{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); AXIS a=new AXIS(); System.out.println('SBI Rate of Interest: '+s.getRateOfInterest()); System.out.println('ICICI Rate of Interest: '+i.getRateOfInterest()); System.out.println('AXIS Rate of Interest: '+a.getRateOfInterest()); } }Vyskúšajte to
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
Môžeme prepísať statickú metódu?
Nie, statickú metódu nemožno prepísať. Dá sa to dokázať runtime polymorfizmom, takže sa to naučíme neskôr.
Prečo nemôžeme prepísať statickú metódu?
Je to preto, že statická metóda je viazaná na triedu, zatiaľ čo metóda inštancie je viazaná na objekt. Statický patrí do oblasti triedy a inštancia patrí do oblasti haldy.
Môžeme prepísať hlavnú metódu java?
Nie, pretože hlavná je statická metóda.
Rozdiel medzi metódou Overloading a Method Overriding v jave
Kliknutím na mňa zobrazíte rozdiel medzi preťažením metódy a prepísaním
príklady automatov dfa
Ďalšie témy o prepisovaní metódy (nie pre začiatočníkov)
Prepísanie metódy pomocou modifikátora prístupuPozrime sa na koncept prepísania metódy pomocou modifikátora prístupu.
Spracovanie výnimiek s prepisovaním metódyPozrime sa na koncept prepisovania metódy pomocou spracovania výnimiek.