logo

Ar galime nepaisyti statinio metodo Java?

Java, svarbiausias ir perkrovimas yra dvi svarbiausios savybės Objektinis programavimas . Ši funkcija naudojama, kai programuotojas nori pasiekti polimorfizmas . Klausimas, ar galime nepaisyti statinio metodo Java arba Ar galite perkrauti statinį metodą Java yra du svarbiausi klausimai, užduodami Java interviu . Šiame skyriuje trumpai suprasime perkrovimą ir nepaisymą. Taip pat paaiškinome atsakymą į kodėl negalime nepaisyti statinio metodo Java?

Statinis metodas

Metodas, turintis statinį raktinį žodį prieš metodo pavadinimą, yra žinomas kaip a statinis metodas . Jis taip pat žinomas kaip a klasės lygio metodas . Statinio metodo kopiją dalijasi visi klasės objektai.

 public static int sum() { } 

Statinius metodus galime iškviesti naudodami klasės pavadinimą. Pavyzdžiui, Math.abs(a) metodas . Metodas grąžina absoliučią priimto argumento vertę. Statinis metodas negali pasiekti egzempliorių kintamųjų ar metodų.

Metodo nepaisymas

Tai yra bruožas Objektinis programavimas . Jis naudojamas vykdymo laiko polimorfizmui pasiekti. Poklasis pateikia konkretų metodo įgyvendinimą, kurį jau teikia pirminė klasė, žinoma kaip metodo viršenybė. Metodo parašas tėvų ir vaikų klasėje turi būti vienodas. Į metodo viršenybė , kuris metodas turi būti vykdomas, nusprendžiama vykdymo metu. Sprendimas priimamas pagal objektą, kurį iškvietėme.

Metodas Perkrovimas

Tai taip pat yra objektinio programavimo ypatybė. Jis naudojamas kompiliavimo laiko polimorfizmui pasiekti. Tai leidžia mums naudoti tą patį metodo pavadinimą, bet skirtingus parašus. Jei klasė turi daugiau nei vieną metodą tuo pačiu pavadinimu, bet skirtingą metodo parašą, ji vadinama metodo perkrova .

Sužinojome, kas yra perkrova ir svarbiausia. Dabar pereiname prie esmės.

Ar galime perkrauti statinį metodą?

Atsakymas yra Taip . Galime perkrauti statinius metodus. Tačiau atminkite, kad metodo parašas turi būti kitoks. Pavyzdžiui, apsvarstykite šią „Java“ programą.

OverloadStaticMethodExample1.java

 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); } } 

Išvestis:

 Static method called. An overloaded static method called. 

Čia iškyla toks klausimas Ar galime perkrauti metodus, jei jie skiriasi tik pagal statinį raktinį žodį.

Atsakymas yra Nr. Negalime nepaisyti dviejų metodų, jei jie skiriasi tik statiniu raktiniu žodžiu. Pavyzdžiui, apsvarstykite šią „Java“ programą.

OverloadStaticMethodExample2.java

 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); } } 

Kai kompiliuojame aukščiau pateiktą programą, ji rodo šią klaidą.

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

Ar galime nepaisyti statinio metodo?

ne, negalime nepaisyti statinių metodų, nes metodo nepaisymas yra pagrįstas dinaminiu susiejimu vykdymo metu, o statiniai metodai yra susieti naudojant statinį susiejimą kompiliavimo metu. Taigi, negalime nepaisyti statinių metodų.

Metodo iškvietimas priklauso nuo objekto, kuris iškviečia statinį metodą, tipo. Tai reiškia:

  • Jei iškviečiame statinį metodą naudodami pirminės klasės objektą, pradinis statinis metodas bus iškviestas iš pirminės klasės.
  • Jei iškviečiame statinį metodą naudodami antrinės klasės objektą, bus iškviestas statinis antrinės klasės metodas.

Toliau pateiktame pavyzdyje ParentClass turi statinį metodą, pavadintą display(), o ChildClass taip pat turi tą patį metodo parašą. Metodas išvestinėje klasėje (ChildClass) paslepia metodą bazinėje klasėje. pažiūrėkime pavyzdį.

OverloadStaticMethodExample3.java

 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'); } } 

Išvestis:

 display() method of the parent class.