- Pochopení problému bez přepsání metody
- Můžeme přepsat statickou metodu
- Přetěžování metody vs. přepisování metody
Pokud má podtřída (podtřída) stejnou metodu jako deklarovaná v nadřazené třídě, je známá jako přepsání metody v Javě .
Jinými slovy, pokud podtřída poskytuje specifickou implementaci metody, která byla deklarována jednou z jejích nadřazených tříd, nazývá se to přepisování metody.
Použití Java Method Overriding
- Přepsání metody se používá k zajištění specifické implementace metody, která je již poskytována její nadtřídou.
- Přepsání metody se používá pro běhový polymorfismus
Pravidla pro přepisování metod Java
- Metoda musí mít stejný název jako v nadřazené třídě
- Metoda musí mít stejný parametr jako v nadřazené třídě.
- Musí existovat vztah IS-A (dědění).
Pochopení problému bez přepsání metody
Pojďme pochopit problém, kterému můžeme v programu čelit, pokud nepoužijeme přepisování metod.
//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(); } }Otestujte to hned
Výstup:
Vehicle is running
Problém je v tom, že musím poskytnout konkrétní implementaci metody run() v podtřídě, proto používáme přepisování metody.
Příklad přepsání metody
V tomto příkladu jsme definovali metodu run v podtřídě, jak je definována v nadřazené třídě, ale má určitou specifickou implementaci. Název a parametr metody jsou stejné a mezi třídami existuje vztah IS-A, takže existuje přepsání metody.
//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 } }Otestujte to hned
Výstup:
Bike is running safely
Skutečný příklad Java Method Overriding
Zvažte scénář, kde je Banka třídou, která poskytuje funkce pro získání úrokové sazby. Úroková sazba se však liší podle bank. Například banky SBI, ICICI a AXIS by mohly poskytovat úrokovou sazbu 8 %, 7 % a 9 %.
Přepsání metody Java se většinou používá v Runtime Polymorphism, o kterém se dozvíme na dalších stránkách.
//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()); } }Otestujte to hned
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
Můžeme přepsat statickou metodu?
Ne, statickou metodu nelze přepsat. Lze to dokázat runtime polymorfismem, takže se to naučíme později.
Proč nemůžeme přepsat statickou metodu?
Je to proto, že statická metoda je svázána s třídou, zatímco metoda instance je svázána s objektem. Statické patří do oblasti třídy a instance patří do oblasti haldy.
Můžeme přepsat hlavní metodu Java?
Ne, protože hlavní je statická metoda.
Rozdíl mezi přetížením metody a přepsáním metody v jazyce Java
Kliknutím na mě zobrazíte rozdíl mezi přetížením a přepsáním metody
Další témata o přepisování metod (ne pro začátečníky)
Přepsání metody pomocí modifikátoru přístupuPodívejme se na koncept přepsání metody pomocí modifikátoru přístupu.
Zpracování výjimek s přepsáním metodyPodívejme se na koncept přepisování metody se zpracováním výjimek.