OVH Cloud OVH Cloud

super classe/sous classe: prb de constructeur

1 réponse
Avatar
Ataya
J'ai donc la classe abstraite suivante:

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?

1 réponse

Avatar
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() {}
}