J'aimerais savoir :
- Pourquoi les méthodes statiques ne peuvent-elles pas être remplacées en Java ?
- Les méthodes statiques peuvent-elles être surchargées en Java ?
J'aimerais savoir :
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.
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);
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.
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.