Classes abstraites

Fermé
loscmichel Messages postés 1 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 10 novembre 2016 - 10 nov. 2016 à 13:29
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 13 nov. 2016 à 22:13
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 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
10 nov. 2016 à 16:56
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 jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
13 nov. 2016 à 22:13
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