logo

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

у Јави, превладавајући и преоптерећења су две најважније карактеристике објектно оријентисано програмирање . Функција се користи када програмер жели да постигне полиморфизам . Питање, можемо ли да заменимо статичку методу у Јави или можете ли преоптеретити статичку методу у Јави су два најважнија питања постављена у Јава интервју . У овом одељку ћемо укратко разумети преоптерећење и надјачавање. Такође смо објаснили одговор на зашто не можемо заобићи статичку методу у Јави?

Статичка метода

Метода која има статичку кључну реч испред назива методе је позната као а статичка метода . Такође је познат као а метод на нивоу класе . Копију статичке методе деле сви објекти класе.

 public static int sum() { } 

Можемо позвати статичке методе користећи име класе. На пример, Матх.абс(а) методом . Метод враћа апсолутну вредност прослеђеног аргумента. Статички метод не може да приступи променљивим или методама инстанце.

Метход Оверридинг

То је карактеристика објектно оријентисано програмирање . Користи се за постизање полиморфизма времена рада. Поткласа обезбеђује специфичну имплементацију методе коју је већ обезбедила њена родитељска класа, позната као превладавање метода. Потпис методе у надређеној и подређеној класи мора бити исти. Ин превладавање метода , који метод треба да се изврши, одлучено је у време извођења. Одлука се доноси према објекту који смо позвали.

Преоптерећење метода

То је такође карактеристика објектно оријентисаног програмирања. Користи се за постизање полиморфизма у времену компајлирања. Омогућава нам да користимо исто име методе али различите потписе. Ако класа има више од једне методе са истим именом, али другачијим потписом метода, позната је као преоптерећење метода .

Научили смо шта је преоптерећено и преовлађујуће. Сада прелазимо на ствар.

Можемо ли преоптеретити статичку методу?

Одговор је да . Можемо преоптеретити статичке методе. Али запамтите да потпис методе мора бити другачији. На пример, размотрите следећи Јава програм.

ОверлоадСтатицМетходЕкампле1.јава

 public class OverloadStaticMethodExample1 { //static method public static void display() { System.out.println('Static method called.'); } //overloaded static method public static void display(int x) { System.out.println('An overloaded static method called.'); } //main method public static void main(String args[]) { //calling static method by using the class name OverloadStaticMethodExample1.display(); OverloadStaticMethodExample1.display(160); } } 

Излаз:

 Static method called. An overloaded static method called. 

Овде се поставља питање можемо ли преоптеретити методе ако се разликују само по статичкој кључној речи.

Одговор је Не. Не можемо заменити две методе ако се разликују само по статичкој кључној речи. На пример, размотрите следећи Јава програм.

ОверлоадСтатицМетходЕкампле2.јава

 public class OverloadStaticMethodExample2 { //static method public static void sum(int a, int b) { int c=a+b; System.out.println('The sum is: '+c); } //non-static method public void sum(int a, int b) { int c=a+b; System.out.println('The sum is: '+c); } //main method public static void main(String args[]) { //calling static method by using the class name OverloadStaticMethodExample2.sum(12, 90); } } 

Када компајлирамо горњи програм, он показује следећу грешку.

 error: method sum(int,int) is already defined in class OverloadStaticMethodExample2 

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

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

Позивање методе зависи од типа објекта који позива статички метод. То значи:

  • Ако позовемо статичку методу користећи објекат родитељске класе, оригинални статички метод ће бити позван из надређене класе.
  • Ако позовемо статичку методу користећи објекат подређене класе, биће позван статички метод подређене класе.

У следећем примеру, ПарентЦласс има статички метод под називом дисплаи(), а ЦхилдЦласс такође има исти потпис методе. Метод у изведеној класи (ЦхилдЦласс) сакрива метод у основној класи. да видимо пример.

ОверлоадСтатицМетходЕкампле3.јава

 public class OverloadStaticMethodExample3 { public static void main(String args[]) { ParentClass pc = new ChildClass(); //calling display() method by parent class object pc.display(); } } //parent class class ParentClass { //we cannot override the display() method public static void display() { System.out.printf('display() method of the parent class.'); } } //child class class ChildClass extends ParentClass { //the same method also exists in the ParentClass //it does not override, actually it is method hiding public static void display() { System.out.println('Overridden static method in Child Class in Java'); } } 

Излаз:

 display() method of the parent class.