Classes abstraites

loscmichel Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   -
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

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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.

public class B extends A {
    public B() {
        super(42);
    }
}
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
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.
0