logo

Заобилажење метода у Јави

  1. Разумевање проблема без замене метода
  2. Можемо ли заобићи статичку методу
  3. Преоптерећење метода наспрам замене метода

Ако поткласа (подређена класа) има исти метод као што је декларисана у надређеној класи, позната је као надјачавање метода у Јави .

Другим речима, ако поткласа обезбеђује специфичну имплементацију методе коју је декларисала једна од њених надређених класа, то је познато као надјачавање методе.

Коришћење замене Јава метода

  • Заобилажење метода се користи да би се обезбедила специфична имплементација методе коју је већ обезбедила њена суперкласа.
  • Заобилажење метода се користи за полиморфизам времена извршавања

Правила за надјачавање Јава метода

  1. Метода мора имати исто име као у надређеној класи
  2. Метода мора имати исти параметар као у надређеној класи.
  3. Мора постојати ИС-А однос (наслеђивање).
Јава правила за замену метода

Разумевање проблема без замене метода

Хајде да разумемо проблем са којим бисмо се могли суочити у програму ако не користимо замену метода.

 //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 

Проблем је у томе што морам да обезбедим конкретну имплементацију рун() методе у поткласи, због чега користимо прегласавање метода.


Пример замене метода

У овом примеру смо дефинисали методу рун у поткласи како је дефинисано у родитељској класи, али има неку специфичну имплементацију. Име и параметар методе су исти, а између класа постоји ИС-А однос, тако да постоји и надјачавање методе.

 //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 

Прави пример заобилажења Јава метода

Размотрите сценарио где је Банка класа која пружа функционалност за добијање каматне стопе. Међутим, каматна стопа варира у зависности од банке. На пример, СБИ, ИЦИЦИ и АКСИС банке могле би да обезбеде каматну стопу од 8%, 7% и 9%.

Пример за банковно превладавање Јава методе

Заобилажење Јава метода се углавном користи у Рунтиме Полиморфизму, што ћемо научити на следећим страницама.

 //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 

Можемо ли заобићи статичку методу?

Не, статичка метода се не може заменити. То се може доказати полиморфизмом времена извршавања, па ћемо то научити касније.


Зашто не можемо заобићи статичку методу?

То је зато што је статичка метода повезана са класом, док је метода инстанце повезана са објектом. Статиц припада области класе, а инстанца припада области гомиле.


Можемо ли да заменимо јава маин метод?

Не, јер је главна статичка метода.


Разлика између преоптерећења метода и заобилажења метода у Јави

Кликните на мене да бисте сазнали разлику између преоптерећења метода и заобилажења


Више тема о заобилажењу метода (није за почетнике)

Заобилажење метода помоћу модификатора приступа

Хајде да видимо концепт замене метода са модификатором приступа.

Руковање изузецима са заменом метода

Хајде да видимо концепт замене метода са руковањем изузетком.