112 votes

Puis-je remplacer et surcharger les méthodes statiques en Java ?

J'aimerais savoir :

  1. Pourquoi les méthodes statiques ne peuvent-elles pas être remplacées en Java ?
  2. Les méthodes statiques peuvent-elles être surchargées en Java ?

42voto

VolatileDream Points 679

Les méthodes statiques ne peuvent pas être neutralisées car il n'y a rien à neutraliser, car elles seraient deux méthodes différentes. Par exemple

static class Class1 {
    public static int Method1(){
          return 0;
    }
}
static class Class2 extends Class1 {
    public static int Method1(){
          return 1;
    }

}
public static class Main {
    public static void main(String[] args){
          //Must explicitly chose Method1 from Class1 or Class2
          Class1.Method1();
          Class2.Method1();
    }
}

Et oui, les méthodes statiques peuvent être surchargées comme n'importe quelle autre méthode.

24voto

Thilo Points 108673

Les méthodes statiques ne peuvent pas être remplacées car elles ne sont pas envoyées sur l'instance objet à l'exécution. Le compilateur décide quelle méthode est appelée.

C'est pourquoi vous recevez un avertissement du compilateur lorsque vous écrivez

 MyClass myObject = new MyClass();
 myObject.myStaticMethod();
 // should be written as
 MyClass.myStaticMethod()
 // because it is not dispatched on myObject
 myObject = new MySubClass();
 myObject.myStaticMethod(); 
 // still calls the static method in MyClass, NOT in MySubClass

Les méthodes statiques peuvent être surchargées (ce qui signifie que vous pouvez avoir le même nom de méthode pour plusieurs méthodes tant qu'elles ont différents types de paramètres).

 Integer.parseInt("10");
 Integer.parseInt("AA", 16);

9voto

Kumar Manish Points 79

Les méthodes de classe parente qui sont statiques ne font pas partie d'une classe enfant (bien qu'elles soient accessibles), il n'est donc pas question de les outrepasser. Même si vous ajoutez une autre méthode statique dans une sous-classe, identique à celle de sa classe parente, cette méthode statique de sous-classe est unique et distincte de la méthode statique de sa classe parente.

5voto

Manoranjan Points 21

Les méthodes statiques ne peuvent pas être remplacées car elles ne font pas partie de l'état de l'objet. Ils appartiennent plutôt à la classe (c'est-à-dire qu'il s'agit de méthodes de classe). Il est acceptable de surcharger les méthodes statiques (et finales).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X