begueradj
Messages postés273Date d'inscriptiondimanche 4 octobre 2009StatutMembreDernière intervention24 juin 2014
-
20 déc. 2010 à 13:50
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
20 déc. 2010 à 18:20
Hello,
J'ai une question très bête mais à laquelle je ne puis pas répondre:
public void paint(Graphics g){
}
Une classe abstraite ne peut pas être instanciée directement: alors comment se fait-il que notre compilateur java ne détecte pas l'erreur ci-dessus puisque la classe Graphics est abstraite ???
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 20 déc. 2010 à 18:20
Salut,
Pour l'exemple voici ce qui est fait (l'exemple est très très très très simple par rapport au travail qui est fait avant l'appel de la méthode paint -la vrai-) :
public class Test1 {
public static void main(String[] args) {
new Test1();
}
public Test1() {
Graphics g = new GraphicsImpl();
paint(g);
}
public void paint(Graphics g) {
g.print();
}
}
abstract class Graphics {
public abstract void print();
}
class GraphicsImpl extends Graphics {
@Override
public void print() {
System.out.println("Hello from GraphicsImpl");
}
}
Ici tu passes bien une classe abstraite mais qui est (indirectement) initialisée.
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."