La question est en Java pourquoi je ne peux pas définir un résumé, la méthode statique? par exemple
abstract class foo {
abstract void bar( ); // <-- this is ok
abstract static void bar2(); //<-- this isn't why?
}
La question est en Java pourquoi je ne peux pas définir un résumé, la méthode statique? par exemple
abstract class foo {
abstract void bar( ); // <-- this is ok
abstract static void bar2(); //<-- this isn't why?
}
L' abstract
d'annotation à une méthode indique que la méthode DOIT être surchargée dans une sous-classe.
En Java, une static
membre (méthode ou champ) ne peut pas être remplacée par des sous-classes (ce n'est pas nécessairement le cas dans d'autres langages orientés objet, voir SmallTalk.)
Depuis les membres statiques ne peuvent pas être redéfinies dans une sous-classe, l' abstract
d'annotation ne peut leur être appliqué.
En aparté - les autres langues de soutien héritage statique, comme exemple de l'héritage. À partir d'un point de vue de la syntaxe, ces langues nécessitent généralement le nom de la classe à être inclus dans la déclaration. Par exemple, en Java, en supposant que vous écrivez du code dans ClassA, ce sont les équivalents des états (si methodA() est une méthode statique, et il n'existe pas de méthode d'instance avec la même signature):
ClassA.methodA();
et
methodA();
En SmallTalk, le nom de la classe n'est pas une option, donc la syntaxe est la suivante (notez que SmallTalk ne pas utiliser le . pour séparer le "sujet" et le "verbe", mais utilise à la place que le statemend terminator):
ClassA methodA.
Parce que le nom de la classe est toujours nécessaire, de la bonne "version" de la méthode peut toujours être déterminée en parcourant la hiérarchie de classe. Pour ce que ça vaut, je ne le manquez de temps en temps static
de l'héritage, et a été mordu par le manque d'héritage statique en Java quand j'ai commencé avec elle. En outre, SmallTalk est canard-typés (et n'a donc pas de programme de soutien par contrat.) Ainsi, il n'a pas d' abstract
modificateur pour les membres de la classe.
J'ai aussi posé la même question , voici pourquoi
Depuis la classe Abstraite dit, il ne donnera pas la mise en œuvre et de permettre à la sous-classe pour lui donner
si la sous-classe a remplacer les méthodes de la super-classe ,
RÈGLE N ° 1 - UNE méthode statique ne peut pas être remplacée
Parce que des membres statiques et méthodes de compilation des éléments , c'est pourquoi la Surcharge(moment de la Compilation, Polymorphisme) de méthodes statiques sont autorisés plutôt puis en Substituant (Polymorphisme d'Exécution)
Donc , ils ne peuvent pas être Abstraite .
Il n'y a pas de chose comme abstrait statique <--- Pas autorisés dans l'Univers Java
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.