- Разбиране на проблема без отмяна на метода
- Можем ли да отменим статичния метод
- Претоварване на метод срещу отмяна на метод
Ако подклас (дъщен клас) има същия метод като декларирания в родителския клас, той е известен като замяна на метод в Java .
С други думи, ако даден подклас предоставя специфичната реализация на метода, който е бил деклариран от един от неговите родителски класове, това е известно като отмяна на метода.
Използване на замяна на метода на Java
- Замяната на метода се използва за предоставяне на специфична реализация на метод, който вече е предоставен от неговия суперклас.
- Замяната на метода се използва за полиморфизъм по време на изпълнение
Правила за замяна на метод на Java
- Методът трябва да има същото име като в родителския клас
- Методът трябва да има същия параметър като в родителския клас.
- Трябва да има връзка IS-A (наследяване).
Разбиране на проблема без отмяна на метода
Нека разберем проблема, с който може да се сблъскаме в програмата, ако не използваме отмяна на метода.
//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(); } }Тествайте сега
Изход:
Vehicle is running
Проблемът е, че трябва да осигуря специфична реализация на метода run() в подклас, затова използваме отмяна на метода.
добавяне на java низ
Пример за отмяна на метод
В този пример сме дефинирали метода run в подкласа, както е дефиниран в родителския клас, но той има някаква специфична реализация. Името и параметърът на метода са еднакви и има връзка IS-A между класовете, така че има отмяна на метода.
//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 } }Тествайте сега
Изход:
Bike is running safely
Истински пример за Java Method Overriding
Помислете за сценарий, при който Bank е клас, който предоставя функционалност за получаване на лихвения процент. Лихвеният процент обаче варира според банките. Например банките SBI, ICICI и AXIS могат да осигурят 8%, 7% и 9% лихвен процент.
Замяната на метода на Java се използва най-вече в полиморфизма по време на изпълнение, който ще научим в следващите страници.
//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()); } }Тествайте сега
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
Можем ли да отменим статичния метод?
Не, статичен метод не може да бъде отменен. Може да се докаже чрез полиморфизъм по време на изпълнение, така че ще го научим по-късно.
Защо не можем да заменим статичния метод?
Това е така, защото статичният метод е обвързан с клас, докато методът на екземпляр е обвързан с обект. Статичното принадлежи към областта на класа, а екземплярът принадлежи към областта на купчината.
Можем ли да заменим основния метод на Java?
Не, защото основният е статичен метод.
Разлика между претоварване на метод и отмяна на метод в java
Щракнете върху мен за разликата между претоварване и отмяна на метода
здравей свят java
Още теми за замяна на метод (не е за начинаещи)
Замяна на метод с модификатор на достъпНека видим концепцията за замяна на метод с модификатор за достъп.
Обработка на изключения с отмяна на методаНека видим концепцията за отмяна на метод с обработка на изключения.