Classes abstraites
loscmichel
Messages postés
1
Statut
Membre
-
tarek_dotzero Messages postés 834 Statut Membre -
tarek_dotzero Messages postés 834 Statut Membre -
Bonjour,
je me retrouve avec une classe abstraite abstract classA, avec une variable d'instance int a , j'ai eu la curiosité d'y introduire un constructeur public classA(int a){this.a=a }
Il se trouve que Eclipse ne m'a indiqué aucune erreur dans la classe classA.
Par contre, bien entendu, je n'ai pas pu créer d'instance avec le constructeur.
Quelqu'un pourrait-il m'expliquer cette contradiction ?
Et la question est : peut-on écrire un constructeur dans une classe abstraite ?
Merci
je me retrouve avec une classe abstraite abstract classA, avec une variable d'instance int a , j'ai eu la curiosité d'y introduire un constructeur public classA(int a){this.a=a }
Il se trouve que Eclipse ne m'a indiqué aucune erreur dans la classe classA.
Par contre, bien entendu, je n'ai pas pu créer d'instance avec le constructeur.
Quelqu'un pourrait-il m'expliquer cette contradiction ?
Et la question est : peut-on écrire un constructeur dans une classe abstraite ?
Merci
2 réponses
Bonjour,
Il n'y a rien de contradictoire ici. Tu ne peux pas construire un objet car la classe est abstraite mais le constructeur reste néanmoins correct et sera utilisable par la classe fille.
Il n'y a rien de contradictoire ici. Tu ne peux pas construire un objet car la classe est abstraite mais le constructeur reste néanmoins correct et sera utilisable par la classe fille.
public class B extends A {
public B() {
super(42);
}
}
Bonjour,
Généralement, une classe abstraite contient des méthode abstraite qui ne sont pas implémentées (tout comme les Interfaces), alors on ne peut pas instantier une classe abstraite mais il faut créer une nouvelle classe qui "extends" la classe abstraite et qui implémente les méthodes abstraites.
Dans votre cas, malgré que la classe ne contient pas des méthodes abstraites, java vous empêche de l'instantier parce qu'elle est marquée comme Abstraite d'où la solution de KX dans le premier commentaire.
Bon Courage.
Généralement, une classe abstraite contient des méthode abstraite qui ne sont pas implémentées (tout comme les Interfaces), alors on ne peut pas instantier une classe abstraite mais il faut créer une nouvelle classe qui "extends" la classe abstraite et qui implémente les méthodes abstraites.
Dans votre cas, malgré que la classe ne contient pas des méthodes abstraites, java vous empêche de l'instantier parce qu'elle est marquée comme Abstraite d'où la solution de KX dans le premier commentaire.
Bon Courage.