#1 Le 08/03/2017, à 14:30
- plouf1221
Classe abstraite en Java ... petit problème. [RESOLU]
Bonjour,
Dans une classe abstraite on n'a pas la droit d'instancier un objet, c'est a dire :
Soit A une classe abtract j'ai pas le droit de faire machin = new A(...);
Le code fonctionne mais à mon avis il ne devrait justement pas fonctionner
Ma classe abstract
abstract class Affichage {
abstract public void affiche ();
}
Ma classe Entier
public class Entier extends Affichage {
private int valeur;
public Entier (int n) {
valeur = n;
}
public void affiche () {
System.out.println("je suis un entier de valeur "+valeur);
}
}
Ma classe flottant
public class Flottant extends Affichage {
private float valeur;
public Flottant (float x) {
valeur = x;
}
public void affiche () {
System.out.println("Je suis un flottant de valeur "+valeur);
}
}
Mon Test
public class Test {
public static void main(String[] args) {
Affichage [] tab; // les classes sont comme des types generalisé
tab = new Affichage [3]; // COMMENT JE PEUX FAIRE UN NEW AFFICHAGE ICI ?
}
}
Je viens justement d'instancier ma classe abstract. Es ce que quelqu'un à une explication svp ?
Dernière modification par plouf1221 (Le 08/03/2017, à 16:46)
Hors ligne
#2 Le 08/03/2017, à 14:49
- soshy
Re : Classe abstraite en Java ... petit problème. [RESOLU]
C'est parce que tu n'instancies pas ta classe justement.
new Affichage[3]
ca cree, un tableau a 3 cases (vides), dans lequel tu peux mettres des objets de type Affichage (et derives, donc ici Flottant et Entier).
Dans ton tableau, tu ne peux pas mettre d'objet Affichage a proprement parler puisque Affichage est abstract et que new Affichage() devrait te sortir une erreur de compilation. En revanche, tu peux y ranger n'importe quelle specialisation de Affichage, donc toutes les classes qui heritent (extends) directement, ou non, ta classe abstraite.
Dernière modification par soshy (Le 08/03/2017, à 14:58)
Hors ligne
#3 Le 08/03/2017, à 16:46
- plouf1221
Re : Classe abstraite en Java ... petit problème. [RESOLU]
C'est compris. Merci.
Hors ligne