public abstract class AbstractTest extends JFrame{
protected JPanel pane = new JPanel();
public AbstractTest(String nameBut){
JButton b = new JButton(nameBut);
pane.add(b);
}
}
Et ma sous classe....
public class test extends AbstractTest{
public test(String S){//err:'Constructeur implicite AbstractTest() non
defini'
nimp();
}
public static void main(String[] args) {
JFrame frame = new test("boutton");//Err:'Constructeur
test(String) non defini'
ExitWindow exit = new ExitWindow();
frame.pack();
frame.setVisible(true);
}
public void nimp(){
JButton c = new JButton("viens de test");
pane.add(c);
setContentPane(pane);
}
}
Question:
Ou est l'erreur?
Comment dois-je declarer le constructeur de ma sous classe sachant que
le constructeur de ma super classe contient des parametres?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zazoun
Pour appeler un constructeur de la classe mère, il faut utiliser le super(<arguments du constructeur>) Pour ton exemple : public test(String S){ super(S); nimp(); }
Quand la classe mère posède un constructeur "par défaut", c'est-à-dire public et sans paramètres, son appel se fait de manière implicite. Par exemple class B { B() {} }
class A extends B { A() {} //équivaut à A() { super();} }
De plus, quand aucun constructeur n'est spécifié dans une classe, il y a forcément un constructeur par défaut défini implicitement : class B {} équivaut à class B { public B() {} }
Pour appeler un constructeur de la classe mère, il faut utiliser le
super(<arguments du constructeur>)
Pour ton exemple :
public test(String S){
super(S);
nimp();
}
Quand la classe mère posède un constructeur "par défaut",
c'est-à-dire public et sans paramètres, son appel se fait de
manière implicite.
Par exemple
class B {
B() {}
}
class A extends B {
A() {} //équivaut à A() { super();}
}
De plus, quand aucun constructeur n'est spécifié dans une classe, il
y a forcément un constructeur par défaut défini implicitement :
class B {}
équivaut à
class B {
public B() {}
}
Pour appeler un constructeur de la classe mère, il faut utiliser le super(<arguments du constructeur>) Pour ton exemple : public test(String S){ super(S); nimp(); }
Quand la classe mère posède un constructeur "par défaut", c'est-à-dire public et sans paramètres, son appel se fait de manière implicite. Par exemple class B { B() {} }
class A extends B { A() {} //équivaut à A() { super();} }
De plus, quand aucun constructeur n'est spécifié dans une classe, il y a forcément un constructeur par défaut défini implicitement : class B {} équivaut à class B { public B() {} }