logo

Pouvons-nous remplacer la méthode statique en Java ?

En Java, primordial et surcharge sont les deux caractéristiques les plus importantes de programmation orientée objet . La fonctionnalité est utilisée lorsque le programmeur souhaite réaliser polymorphisme . La question, pouvons-nous remplacer la méthode statique en Java ou pouvez-vous surcharger la méthode statique en Java sont les deux questions les plus importantes posées dans Entretien Java . Dans cette section, nous comprendrons en bref la surcharge et le remplacement. Nous avons également expliqué la réponse de pourquoi ne pouvons-nous pas remplacer la méthode statique en Java ?

Méthode statique

La méthode qui a un mot-clé static avant le nom de la méthode est appelée méthode statique . Il est également connu sous le nom de méthode au niveau de la classe . Une copie de la méthode statique est partagée par tous les objets de la classe.

 public static int sum() { } 

Nous pouvons invoquer des méthodes statiques en utilisant le nom de la classe. Par exemple, Math.abs(a) méthode . La méthode renvoie la valeur absolue de l'argument passé. La méthode statique ne peut pas accéder aux variables ou méthodes d'instance.

Remplacement de méthode

C'est une caractéristique de programmation orientée objet . Il est utilisé pour obtenir un polymorphisme d'exécution. La sous-classe fournit une implémentation spécifique d'une méthode déjà fournie par sa classe parent, appelée substitution de méthode. La signature de la méthode dans les classes parent et enfant doit être la même. Dans remplacement de méthode , quelle méthode doit être exécutée, décidée au moment de l'exécution. La décision est prise en fonction de l'objet que nous avons appelé.

Surcharge de méthode

C'est également une fonctionnalité de la programmation orientée objet. Il est utilisé pour réaliser le polymorphisme au moment de la compilation. Cela nous permet d'utiliser le même nom de méthode mais des signatures différentes. Si une classe possède plusieurs méthodes portant le même nom mais une signature de méthode différente, elle est appelée surcharge de méthode .

Nous avons appris ce qui est surchargé et primordial. Passons maintenant au fait.

Peut-on surcharger une méthode statique ?

La réponse est Oui . Nous pouvons surcharger les méthodes statiques. Mais rappelez-vous que la signature de la méthode doit être différente. Par exemple, considérons le programme Java suivant.

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

Sortir:

 Static method called. An overloaded static method called. 

Ici se pose une question qui pouvons-nous surcharger les méthodes si elles ne sont différentes que par un mot clé static.

La réponse est Non. Nous ne pouvons pas remplacer deux méthodes si elles ne diffèrent que par un mot-clé statique. Par exemple, considérons le programme Java suivant.

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

Lorsque nous compilons le programme ci-dessus, il affiche l'erreur suivante.

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

Pouvons-nous remplacer une méthode statique ?

Non, nous ne pouvons pas remplacer les méthodes statiques car le remplacement de méthode est basé sur une liaison dynamique au moment de l'exécution et les méthodes statiques sont liées à l'aide d'une liaison statique au moment de la compilation. Nous ne pouvons donc pas remplacer les méthodes statiques.

L'appel de la méthode dépend du type d'objet qui appelle la méthode statique. Ça veut dire:

  • Si nous appelons une méthode statique en utilisant l'objet de classe parent, la méthode statique d'origine sera appelée depuis la classe parent.
  • Si nous appelons une méthode statique en utilisant l’objet classe enfant, la méthode statique de la classe enfant sera appelée.

Dans l'exemple suivant, ParentClass a une méthode statique nommée display() et ChildClass a également la même signature de méthode. La méthode de la classe dérivée (ChildClass) masque la méthode de la classe de base. voyons un exemple.

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

Sortir:

 display() method of the parent class.