logo

Przesłonięcie metody w Javie

  1. Zrozumienie problemu bez przesłaniania metod
  2. Czy możemy zastąpić metodę statyczną
  3. Przeciążanie metod a zastępowanie metod

Jeśli podklasa (klasa podrzędna) ma tę samą metodę, co zadeklarowana w klasie nadrzędnej, nazywa się to nadpisywanie metod w Javie .

Innymi słowy, jeśli podklasa zapewnia specyficzną implementację metody, która została zadeklarowana przez jedną z jej klas nadrzędnych, nazywa się to przesłonięciem metody.

Użycie przesłaniania metody Java

  • Nadpisywanie metod służy do zapewnienia konkretnej implementacji metody, która jest już zapewniona przez jej nadklasę.
  • Zastępowanie metod jest używane w przypadku polimorfizmu w czasie wykonywania

Reguły zastępowania metod Java

  1. Metoda musi mieć taką samą nazwę jak w klasie nadrzędnej
  2. Metoda musi mieć taki sam parametr jak w klasie nadrzędnej.
  3. Musi istnieć relacja IS-A (dziedziczenie).
Reguły Java dotyczące zastępowania metod

Zrozumienie problemu bez przesłaniania metod

Rozumiemy problem jaki możemy napotkać w programie jeśli nie zastosujemy przesłaniania 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(); } } 
Przetestuj teraz

Wyjście:

 Vehicle is running 

Problem polega na tym, że muszę zapewnić konkretną implementację metody run() w podklasie, dlatego używamy przesłaniania metod.


Przykład przesłaniania metody

W tym przykładzie zdefiniowaliśmy metodę run w podklasie zgodnie z definicją w klasie nadrzędnej, ale ma ona pewną specyficzną implementację. Nazwa i parametry metody są takie same, a między klasami istnieje relacja IS-A, więc następuje przesłonięcie 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 } } 
Przetestuj teraz

Wyjście:

 Bike is running safely 

Prawdziwy przykład przesłaniania metody Java

Rozważmy scenariusz, w którym Bank jest klasą zapewniającą funkcjonalność umożliwiającą uzyskanie stopy procentowej. Jednak stopa procentowa różni się w zależności od banku. Na przykład banki SBI, ICICI i AXIS mogą zapewnić stopę procentową w wysokości 8%, 7% i 9%.

Metoda Java przesłaniająca przykład banku

Nadpisywanie metod Java jest najczęściej stosowane w polimorfizmie środowiska wykonawczego, o czym dowiemy się na następnych stronach.

 //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()); } } 
Przetestuj teraz
 Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 

Czy możemy zastąpić metodę statyczną?

Nie, metody statycznej nie można zastąpić. Można to udowodnić za pomocą polimorfizmu w czasie wykonywania, więc dowiemy się tego później.


Dlaczego nie możemy zastąpić metody statycznej?

Dzieje się tak dlatego, że metoda statyczna jest powiązana z klasą, podczas gdy metoda instancji jest powiązana z obiektem. Statyczny należy do obszaru klas, a instancja należy do obszaru sterty.

zawiera metodę Java

Czy możemy zastąpić główną metodę Java?

Nie, ponieważ main jest metodą statyczną.


Różnica między przeciążaniem metody a zastępowaniem metody w java

Kliknij mnie, aby zobaczyć różnicę między przeciążaniem metody a zastępowaniem


Więcej tematów na temat zastępowania metod (nie dla początkujących)

Zastępowanie metody za pomocą modyfikatora dostępu

Przyjrzyjmy się koncepcji przesłaniania metody za pomocą modyfikatora dostępu.

Obsługa wyjątków z przesłonięciem metody

Przyjrzyjmy się koncepcji przesłaniania metod z obsługą wyjątków.