[Java] héritage abstract

héritage abstract [Java] - Java - Programmation

Marsh Posté le 19-12-2005 à 18:47:19    

hello  :hello:  
 
Il y  a quelque chose que je ne comprend pas en Java.
 
J'essaye de faire une classe perso pour gérer une image.
Je l'a fait donc hériter de Image.
 

Code :
  1. class ImagePerso extends Image


 
Lors de la compilation le compilateur me demande d'"override" les methodes abstraite de la classe image. Il y a flush par exemple.
Je fait donc

Code :
  1. public void flush(){super.flush();}


 
A ce moment le compilateur me dit que je ne peut pas acceder directement à la méthode flush. J'ai alors essayé de mettre ne place d'autres idées mais il y a toujours quelque chose qui cloche.
 
Alors qu'est ce qui m'échappe dans tous ca ? Quel est la solution ?

Reply

Marsh Posté le 19-12-2005 à 18:47:19   

Reply

Marsh Posté le 19-12-2005 à 18:51:18    

implements ? [:pingouino]

Reply

Marsh Posté le 19-12-2005 à 19:12:42    

Ben Image n'est pas une classe abstraite a ce que je sache. Pourquoi je ne pourrais pas faire un bête héritage ?

Reply

Marsh Posté le 19-12-2005 à 19:23:45    

ffomnislash a écrit :

Ben Image n'est pas une classe abstraite a ce que je sache.


ah bon ?
 
http://java.sun.com/j2se/1.4.2/doc [...] Image.html
 

Citation :


public abstract class Image
extends Object
 
The abstract class Image is the superclass of all classes that represent graphical images. The image must be obtained in a platform-specific manner.
 
Since:
    JDK1.0  

Reply

Marsh Posté le 19-12-2005 à 19:51:30    

ffomnislash a écrit :

Lors de la compilation le compilateur me demande d'"override" les methodes abstraite de la classe image. Il y a flush par exemple.
Je fait donc

Code :
  1. public void flush(){super.flush();}


 
A ce moment le compilateur me dit que je ne peut pas acceder directement à la méthode flush. J'ai alors essayé de mettre ne place d'autres idées mais il y a toujours quelque chose qui cloche.
 
Alors qu'est ce qui m'échappe dans tous ca ? Quel est la solution ?


 
rappel de POO: si la méthode flush() de la classe Image est abstraite, alors forcément la classe est abstraite (c'est pas l'inverse). ça veut donc dire que flush() n'est pas implémentée dans Image, donc c'est à toi de la coder ! :)
et donc si tu (petit rusé ;)) fais un super.flush() tu fais directement référence à la méthode flush() de la superclasse (Image en l'occurrence), soit donc à la méthode non implémentée, donc tu ne résouds pas le problème du tout, et un appel à super.flush() est impossible


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 19-12-2005 à 20:09:20    

Tu a raison je fait n'importe quoi ^^
 
Finalement voici a quoi ressemble ma classe, avec les méthode dont j'ai besoin actuellement.
 

Code :
  1. import java.awt.*;
  2. class ImagePerso
  3. {
  4. private String chemin = null;
  5. private Image img;
  6. private MediaTracker mTrack;
  7. private Canvas pnl;
  8. public ImagePerso(Canvas pnl2, String chemin2)
  9. {
  10.  super();
  11.  pnl = pnl2;
  12.  chemin=chemin2;
  13.  load();
  14. }
  15. private void load()
  16. {
  17.  if(chemin != null)
  18.  {
  19.   try
  20.   {
  21.    mTrack = new MediaTracker( pnl );
  22.    img = pnl.getToolkit().getImage(  chemin  );
  23.    mTrack.addImage( img, 0 );
  24.    mTrack.waitForAll();
  25.   }
  26.   catch (Exception e)
  27.   {
  28.    System.out.println( " ImagePerso::load : " + e );
  29.   }
  30.  }
  31.  else
  32.   System.out.println( " ImagePerso::load : Aucun chemin d'image spécifié." );
  33. }
  34. public Image getImage()
  35. {
  36.  return img;
  37. }
  38. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed