2010-02-08 5 views
1

Ce qui suit ne fonctionne pas pour moi en Java. Eclipse se plaint qu'il n'y a pas un tel constructeur. J'ai ajouté le constructeur à la sous-classe pour contourner le problème, mais y a-t-il une autre façon de faire ce que j'essaie de faire?Comment déclarer un constructeur par défaut pour la sous-classe de la classe abstraite?

public abstract class Foo { 
    String mText; 

    public Foo(String text) { 
     mText = text; 
    } 
} 

public class Bar extends Foo { 

} 

Foo foo = new Foo("foo"); 

Répondre

10

Vous ne pouvez pas instancier Foo car il est abstrait.

A la place, Bar nécessite un constructeur qui appelle le constructeur super(String).

par exemple.

public Bar(String text) { 
    super(text); 
} 

Ici je passe la chaîne text jusqu'au super constructeur. Mais vous pouvez faire (par exemple):

public Bar() { 
    super(DEFAULT_TEXT); 
} 

La construction super() doit être la première instruction dans le constructeur de sous-classe.

+0

+1 votre réponse est meilleure: P –

+0

Merci. Je voulais dire Barre de barre = nouvelle barre ("barre"); J'ai votre solution implémentée, mais je n'étais pas sûr si vous aviez à implémenter le constructeur en Java. –

0

Vous ne pouvez pas instancier à partir d'une classe abstraite et c'est ce que vous essayez ici. Etes-vous sûr de ne pas vouloir dire:

???

Questions connexes