salut.
J'ai appris que javafx permettait l'héritage multiple. Je voulais savoir comment elle a résolu les problèmes classiques qui sont liés à cette pratique !
Par exemple, si les deux classes mères contiennent deux méthodes avec le même nom ?
Merci
salut.
J'ai appris que javafx permettait l'héritage multiple. Je voulais savoir comment elle a résolu les problèmes classiques qui sont liés à cette pratique !
Par exemple, si les deux classes mères contiennent deux méthodes avec le même nom ?
Merci
Ca les resout mal et de maniere pas vraiment bien definie (c'est le flou officiel) dans les versions 1.0 et 1.1/1.1.1*.
La version 1.2 introduit l'usage du mot cle mixin a placer sur les autres classes meres** et permet enfin d'appeler super.nomDeMethodeOuFonction().
**On pouvait heriter d'un nombre infini d'interfaces et de classes JavaFX, le nombre d'heritages de classe Java etait limite a 1 il me semble.
**On ne peut donc heriter d'une seule et unique classe JavaFX et Java directement et d'un nombre infini de mixing JavaFX ou d'interfaces. Le nombre d'heritage de classe Java doit toujours etre limite a 1 vu que le mot cle mixin n'existe pas dans ce language.
Pour le reste, je n'ai pas pousse plus loin mes investigations quant a l'heritage en diamant ou les collisions de nom dans cette nouvelle version (trop de problemes dans les version precedentes font que j'ai vite abandonne le sujet : VIVE LA DELEGATION !).
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Exemple :
On accède au champ ID de chaque mixin, mais pas à la méthode. J'ai rempli un bug : http://javafx-jira.kenai.com/browse/JFXC-3273
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 def individual = Contact { firstName: "Julien", lastName: "Jabbot", role: "Senior Developer" }; //~ individual.printInfo(); //~ println(individual.id); (individual as Person).printInfo(); (individual as Employee).printInfo(); println("{(individual as Person).id}"); println("{(individual as Employee).id}"); mixin class Person { var firstName = "Fabien"; var lastName = "Flubbler"; var id = 89771; function printInfo() { println("{firstName} {lastName}"); } abstract function isAlive(); } mixin class Employee { var role = "Project Manager"; var id = 11666342; function printInfo() { println("{role}"); } } class Contact extends Person, Employee { override function isAlive() { return Person.id > 0; } }
Je crois que la solution est qu'un des deux champs sera caché par l'autre...
Comme dit bouye, et comme un peu partout dans JavaFX, c'est pas parfait et en cours d'amélioration...
Ce qui est marrant, c'est qu'on a encore des classes abstraites, qui font maintenant bien double emploi avec les mixins (en plus limité !).
C'est vraiment & evidement le derangement que peut avoir l'heritage simple.
En effet c'est vrai normal qu'un enfant peut heriter de sa mere et son pere d'ailleurs s'il s'agit d'un enfant unique. Supposon que sa mere à un villa au Mali et son pere un autre à Moscone. Je peux bel et bien heriter de ses deux villa.
Mais un probleme persiste, comme il est heritier, les barbes etant public et le sein protected, alors il peut avoir les barbes de son pere et les seins de sa mere.
La on se retrouve devant un autre Michael Jackson. C'est ce qui est frequent en C++.
C'est vrai que ca limite effetictement java mais les interfaces resolvent la plupart de temps ce probleme.
Enfin c'etait juste pour detendre le debat.
Comme mon grand père le disait, si ma tante en avait, l'héritage serait plus simple...
Allez hop, un petit article sur le sujet : http://java.sun.com/developer/techni.../javafx/mixin/
Je comprend tout a fait qu'on ne puisse pas faire cela :
Mais je suis cependant surpris qu'il ne soit pas possible de faire cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var m:MyMixin = new MyMixin(); // ILLEGAL. COMPILER ERROR.
Puisque normalement ceci cree en fait une classes anynome qui etend le mixin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var m:MyMixin = MyMixin { // ILLEGAL. COMPILER ERROR. variable1: "Hello Again" variable2: "World" }
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Partager