Vraiment très simple...
Quote:
public abstract class MaForme
public class MaForme1 extends Geometrie
Le compilateur s'attend à voir:
public class MaForme1 extends MaForme
Sinon il considère que les méthodes de la classe abstraite MaForme ne sont pas implémentées et il a raison.
Quelques remarques en dehors de ce problème particulier:
- tu mets des implements Serializable partout. Ca n'a pas de sens. (Sauf si tu suis le principe de certains qui affirment que mieux vaut un code long et laid qu'un code concis et élégant :lol: )
Bref, à partir du moment où MaForme implémente Serializable, tout ce qui en dérive l'implémente aussi. Donc MaForme implements Serializable est suffisant.
- ensuite:
public void dessine(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
Pardonne moi, mais quelle atrocité.
Ca veut dire qu'à chaque fois qu'une forme quelle qu'elle soit se dessine, elle va faire le transtypage dynamique de Graphics vers Graphics2D. Tu te doutes bien qu'un transtypage dynamqiue come celui-ci à un coût élevé à l'exécution. Déjà que Java est un langage qui se traîne, pas la peine de lui mettre des boulets aux pieds.
Comme vraisemblablement tu passes le Graphics depuis la méthode paintComponent d'un panneau, à ce moment déjà tu dois faire le transtypage, donc à ce moment c'est le Graphics2D que tu dois passer aux méthodes dessine, dont la signature doit être redéfinie bien entendu:
public void dessine(Graphics2D g)
Enfin dans un post d'avant j'ai vu qu'une forme, en plus de dériver de la classe abstraite, dérive aussi d'une autre forme.
Je suis assez près à parier que c'est le fameux cercle qui dérive de l'ellipse :)
Un débat moult fois houleux qui a usé des milliers de claviers. :lol: Mais normalement, si le cercle, pour le matheux est un cas particulier de l'ellipse, en POO, il est meilleurs de déclarer une classe Ellipse et une classe Cercle, toutes deux dérivées de MaForme et sans lien entre elles.
Vraiment très simple...
Le compilateur s'attend à voir:
public class MaForme1 extends MaForme
Sinon il considère que les méthodes de la classe abstraite MaForme ne sont pas implémentées et il a raison.
Quelques remarques en dehors de ce problème particulier:
- tu mets des implements Serializable partout. Ca n'a pas de sens. (Sauf si tu suis le principe de certains qui affirment que mieux vaut un code long et laid qu'un code concis et élégant :lol: )
Bref, à partir du moment où MaForme implémente Serializable, tout ce qui en dérive l'implémente aussi. Donc MaForme implements Serializable est suffisant.
- ensuite:
Pardonne moi, mais quelle atrocité.
Ca veut dire qu'à chaque fois qu'une forme quelle qu'elle soit se dessine, elle va faire le transtypage dynamique de Graphics vers Graphics2D. Tu te doutes bien qu'un transtypage dynamqiue come celui-ci à un coût élevé à l'exécution. Déjà que Java est un langage qui se traîne, pas la peine de lui mettre des boulets aux pieds.
Comme vraisemblablement tu passes le Graphics depuis la méthode paintComponent d'un panneau, à ce moment déjà tu dois faire le transtypage, donc à ce moment c'est le Graphics2D que tu dois passer aux méthodes dessine, dont la signature doit être redéfinie bien entendu:
public void dessine(Graphics2D g)
Enfin dans un post d'avant j'ai vu qu'une forme, en plus de dériver de la classe abstraite, dérive aussi d'une autre forme.
Je suis assez près à parier que c'est le fameux cercle qui dérive de l'ellipse :)
Un débat moult fois houleux qui a usé des milliers de claviers. :lol: Mais normalement, si le cercle, pour le matheux est un cas particulier de l'ellipse, en POO, il est meilleurs de déclarer une classe Ellipse et une classe Cercle, toutes deux dérivées de MaForme et sans lien entre elles.