|
Bas de page | |
---|---|
Auteur | Sujet : JVM comment ça marche en fait... |
Publicité | Posté le 05-01-2008 à 21:58:15 |
Kragorn | bloc static mere aa
|
twif | ah enfin quelqu'un se jette a l'eau ^^
|
Kragorn | Je sais pourquoi, lors de la compilation, le compilateur fait le lien entre la méthode statique et de ce fait se rend compte qu'il n'a pas besoin de ClasseFille et remplace donc ton code ClasseFille.methode() par ClasseMere.methode() tout simplement.
Message édité par Kragorn le 06-01-2008 à 23:08:26 |
twif | j'trouve ça dingue comme comportement, tant qu'une méthode static (de la classe fille) ou que l'objet n'est pas instancié, le bloc static n'est pas appelé donc... pourquoi ou pourquoi pas.. ! |
BifaceMcLeOD The HighGlandeur | Une méthode statique ne peut pas être redéfinie dans une sous-classe. Autrement dit (même si cela peut faire bizarre), les méthodes statiques ne sont pas héritées, même si elles sont accessibles dans les sous-classes.
|
twif | J'comprends bien la théorie, mais c'est assez étrange que l'appel à "methode()" via la classe fille (ClasseFille.methode dans le main) ne charge pas la classe fille dans la JVM, pour preuve le code dans le bloc statique de fille n'est pas exécuter, (system.out "bloc static fille aa " ). Comme si la JVM sait par avance que methode() n'est que dans ClassMere et que ClassFille en hérite donc la JVM fait le raccourci d'elle meme, donc pas beson de charger ClassFille, et quand on a des variables qu'on pense etre initialisées dans le bloc statique de la fille on se retrouve avec un joli nullPonterException, j'trouve que c'est pas très instinctif
|
verdy_p | Tout écrire en statique en Java c'est comme programmer du vieux BASIC ou du Fortran d'il y a 20 ans. Où est la programmation objet? Nulle-part c'est du traitement procédural. twif, il va falloir te faire à l'idée qu'on ne programme plus aujourd'hui comme ça. Le mot clé "static" est même interdit dans pas mal de projets (ou dans les langages fonctionnels purs) à cause des risques qu'ils posent (sécurité...) et la difficulté de faire évoluer le logiciel et le maintenir. Même en Javascript on connait les problèmes que ça pose de tout mettre dans des variables du même objet "document" dans une page: les relations entre scripts sont trop compliquées à maintenir car cela augmente fortement les dépendances et incompatibilités. Le principe de l'objet est d'isoler le comportement en rendant les objets le plus indépendants possible et donc plus facilement réutilisables. Message édité par verdy_p le 01-02-2008 à 16:15:44 |
BifaceMcLeOD The HighGlandeur |
|
twif |
|
Publicité | Posté le 29-02-2008 à 00:53:17 |
el muchacho Comfortably Numb | N'empêche qu'il a raison. Strictement aucun intérêt de mettre tout ce code en static. |
twif | Aucun intérêt, oui tu as peut être raison, le code d"origine est quand même plus compliqué que l'exemple que j'ai donné |
Sujets relatifs | |
---|---|
XMLHttpRequest qui marche en local, mais pas en ligne... | [VB.NET 05] - Appli console marche sous XP, pas sous Vista ? |
[Résolu][StringTokenizer - Urgent] Comment ça marche ? | [Résolu][Html/CSS]"a:active" ne marche qu'à l'instant du clic.. |
Ma caltoche ne marche pas ! | Menu JS qui ne marche pas avec IE |
CSS: pourquoi ça marche pas ? | swf en boucle | loop="false" ne marche pas |
[XSLT]Récursivité | soucis pour remettre en marche site web |
Plus de sujets relatifs à : JVM comment ça marche en fait... |