Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 08/03/2017, à 15: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, à 17:46)

Hors ligne

#2 Le 08/03/2017, à 15: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, à 15:58)

Hors ligne

#3 Le 08/03/2017, à 17:46

plouf1221

Re : Classe abstraite en Java ... petit problème. [RESOLU]

C'est compris. Merci.

Hors ligne