logo

Kunnen we de statische methode in Java negeren?

Op Java, overheersend En overbelasting zijn de twee belangrijkste kenmerken van object georiënteerd programmeren . De functie wordt gebruikt wanneer de programmeur iets wil bereiken polymorfisme . De vraag, kunnen we de statische methode in Java overschrijven of kun je de statische methode in Java overbelasten zijn de twee belangrijkste vragen die gesteld worden Java-interview . In dit gedeelte zullen we overbelasting en overschrijven in het kort uitleggen. We hebben ook het antwoord van uitgelegd waarom kunnen we de statische methode in Java niet negeren?

Statische methode

De methode met een statisch trefwoord vóór de naam van de methode staat bekend als a statische methode . Het is ook bekend als een methode op klasniveau . Een kopie van de statische methode wordt gedeeld door alle objecten van de klasse.

 public static int sum() { } 

We kunnen statische methoden aanroepen door de klassenaam te gebruiken. Bijvoorbeeld, Wiskunde.abs(a) methode . De methode retourneert de absolute waarde van het doorgegeven argument. De statische methode heeft geen toegang tot instantievariabelen of -methoden.

Methode overschrijven

Het is een kenmerk van object georiënteerd programmeren . Het wordt gebruikt om runtime-polymorfisme te bereiken. De subklasse biedt een specifieke implementatie van een methode die al wordt geleverd door de bovenliggende klasse, bekend als methode overschrijven. De handtekening van de methode in de bovenliggende en onderliggende klasse moet hetzelfde zijn. In methode overschrijven , welke methode moet worden uitgevoerd, wordt tijdens runtime bepaald. De beslissing wordt genomen op basis van het object dat we hebben gebeld.

Methode Overbelasting

Het is ook een kenmerk van objectgeoriënteerd programmeren. Het wordt gebruikt om polymorfisme tijdens het compileren te bereiken. Hiermee kunnen we dezelfde methodenaam gebruiken, maar verschillende handtekeningen. Als een klasse meer dan één methode heeft met dezelfde naam maar een andere handtekening van de methode, staat deze bekend als methode overbelasting .

We hebben geleerd wat overbelasten en overheersen is. Nu gaan we naar het punt.

Kunnen we een statische methode overbelasten?

Het antwoord is Ja . We kunnen statische methoden overbelasten. Maar onthoud dat de handtekening van de methode anders moet zijn. Beschouw bijvoorbeeld het volgende Java-programma.

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

Uitgang:

 Static method called. An overloaded static method called. 

Hier rijst een vraag kunnen we de methoden overbelasten als ze alleen verschillen op basis van een statisch trefwoord.

Het antwoord is Nee. We kunnen twee methoden niet overschrijven als ze alleen verschillen op basis van een statisch trefwoord. Beschouw bijvoorbeeld het volgende Java-programma.

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

Wanneer we het bovenstaande programma compileren, wordt de volgende fout weergegeven.

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

Kunnen we een statische methode overschrijven?

Nee, we kunnen statische methoden niet overschrijven, omdat het overschrijven van methoden gebaseerd is op dynamische binding tijdens runtime en de statische methoden worden gekoppeld met behulp van statische binding tijdens het compileren. We kunnen statische methoden dus niet terzijde schuiven.

Het aanroepen van de methode hangt af van het type object dat de statische methode aanroept. Het betekent:

  • Als we een statische methode aanroepen met behulp van het bovenliggende klasseobject, wordt de oorspronkelijke statische methode aangeroepen vanuit de bovenliggende klasse.
  • Als we een statische methode aanroepen met behulp van het onderliggende klasseobject, wordt de statische methode van de onderliggende klasse aangeroepen.

In het volgende voorbeeld heeft de ParentClass een statische methode met de naam display() en heeft de ChildClass ook dezelfde handtekening van de methode. De methode in de afgeleide klasse (ChildClass) verbergt de methode in de basisklasse. laten we een voorbeeld zien.

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

Uitgang:

 display() method of the parent class.