logo

Können wir die statische Methode in Java überschreiben?

In Java, überragend Und Überlastung sind die beiden wichtigsten Merkmale von Objekt orientierte Programmierung . Die Funktion wird verwendet, wenn der Programmierer etwas erreichen möchte Polymorphismus . Die Frage, Können wir die statische Methode in Java überschreiben? oder Können Sie eine statische Methode in Java überladen? sind die beiden wichtigsten Fragen, die gestellt werden Java-Interview . In diesem Abschnitt werden wir das Überladen und Überschreiben kurz verstehen. Wir haben auch die Antwort von erklärt Warum können wir die statische Methode in Java nicht überschreiben?

Statische Methode

Die Methode, die vor dem Methodennamen ein statisches Schlüsselwort hat, wird als a bezeichnet statische Methode . Es ist auch als a bekannt Methode auf Klassenebene . Eine Kopie der statischen Methode wird von allen Objekten der Klasse gemeinsam genutzt.

 public static int sum() { } 

Wir können statische Methoden aufrufen, indem wir den Klassennamen verwenden. Zum Beispiel, Math.abs(a) Methode . Die Methode gibt den absoluten Wert des übergebenen Arguments zurück. Die statische Methode kann nicht auf Instanzvariablen oder -methoden zugreifen.

Methodenüberschreibung

Es ist eine Funktion von Objekt orientierte Programmierung . Es wird verwendet, um Laufzeitpolymorphismus zu erreichen. Die Unterklasse stellt eine spezifische Implementierung einer Methode bereit, die bereits von ihrer übergeordneten Klasse bereitgestellt wird, bekannt als Methode überschreiben. Die Signatur der Methode in der übergeordneten und untergeordneten Klasse muss identisch sein. In Methode überschreiben , welche Methode ausgeführt werden soll, wird zur Laufzeit entschieden. Die Entscheidung wird anhand des von uns aufgerufenen Objekts getroffen.

Methodenüberladung

Es ist auch ein Merkmal der objektorientierten Programmierung. Es wird verwendet, um Polymorphismus zur Kompilierungszeit zu erreichen. Es ermöglicht uns, denselben Methodennamen, aber unterschiedliche Signaturen zu verwenden. Wenn eine Klasse mehr als eine Methode mit demselben Namen, aber unterschiedlicher Methodensignatur hat, wird sie als bezeichnet Methodenüberladung .

Wir haben gelernt, was Überlastung und Übersteuerung bedeutet. Jetzt kommen wir zum Punkt.

Können wir eine statische Methode überladen?

Die Antwort ist Ja . Wir können statische Methoden überladen. Denken Sie jedoch daran, dass die Methodensignatur unterschiedlich sein muss. Betrachten Sie beispielsweise das folgende Java-Programm.

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

Ausgabe:

 Static method called. An overloaded static method called. 

Hier stellt sich die Frage Können wir die Methoden überladen, wenn sie sich nur durch das Schlüsselwort static unterscheiden?

Die Antwort ist NEIN. Wir können zwei Methoden nicht überschreiben, wenn sie sich nur durch das statische Schlüsselwort unterscheiden. Betrachten Sie beispielsweise das folgende Java-Programm.

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

Wenn wir das obige Programm kompilieren, wird der folgende Fehler angezeigt.

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

Können wir eine statische Methode überschreiben?

NEIN, Wir können statische Methoden nicht überschreiben, da das Überschreiben von Methoden auf einer dynamischen Bindung zur Laufzeit basiert und die statischen Methoden zur Kompilierungszeit mithilfe einer statischen Bindung gebunden werden. Daher können wir statische Methoden nicht überschreiben.

Der Aufruf der Methode hängt von der Art des Objekts ab, das die statische Methode aufruft. Es bedeutet:

  • Wenn wir eine statische Methode mithilfe des übergeordneten Klassenobjekts aufrufen, wird die ursprüngliche statische Methode von der übergeordneten Klasse aufgerufen.
  • Wenn wir eine statische Methode mithilfe des untergeordneten Klassenobjekts aufrufen, wird die statische Methode der untergeordneten Klasse aufgerufen.

Im folgenden Beispiel verfügt die ParentClass über eine statische Methode namens display() und die ChildClass verfügt ebenfalls über dieselbe Methodensignatur. Die Methode in der abgeleiteten Klasse (ChildClass) verbirgt die Methode in der Basisklasse. Sehen wir uns ein Beispiel an.

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

Ausgabe:

 display() method of the parent class.