OVH Cloud OVH Cloud

Constructeur

4 réponses
Avatar
alexandre cartapanis
Bonjour
J'ai une question con: est-ce que le constructeur vide d'une super
classe est toujours appelé?
Je m'explique: j'ai une classe

public abstract Class Module {
private String status = "NULL";
public Module() {
status = "RESOLVED";
}
...
}

N'importe qui peut creer un module:

public Class TestModule extends Module {
public TestModule() {
//pas d'appel a super!!
je fais qqc
}
public TestModule(String _str) {
//pas d'appel a super!!
je fais qqc
}
}

Apres un appel new TestModule(), est-ce que ma variable status sera a
NULL ou a RESOLVED?
Apres un appel new TestModule("test"), est-ce que ma variable status
sera a NULL ou a RESOLVED?

Merci d'avance

4 réponses

Avatar
Francis JUGE-BOIRARD
Bonjour,
Il suffit de tester, mais si le "super constructeur" n'est pas appellé
explicitement, status = "NULL".
Avatar
alexandre cartapanis
Bonjour,
Il suffit de tester, mais si le "super constructeur" n'est pas appellé
explicitement, status = "NULL".
Ben j'ai testé, et status = "RESOLVED" que j'utilise new Module() ou

Module.class.newInstance().

Avatar
Valdo Tschantre
alexandre cartapanis wrote:
Bonjour
J'ai une question con: est-ce que le constructeur vide d'une super
classe est toujours appelé?
Je m'explique: j'ai une classe

public abstract Class Module {
private String status = "NULL";
public Module() {
status = "RESOLVED";
}
...
}

N'importe qui peut creer un module:

public Class TestModule extends Module {
public TestModule() {
//pas d'appel a super!!
je fais qqc
}
public TestModule(String _str) {
//pas d'appel a super!!
je fais qqc
}
}

Apres un appel new TestModule(), est-ce que ma variable status sera a
NULL ou a RESOLVED?
Apres un appel new TestModule("test"), est-ce que ma variable status
sera a NULL ou a RESOLVED?

Merci d'avance




Pour construire une sous-classe, il faut contrure sa super-classe. Ce
faisant, si au debut des constructeurs de ta sous-classe tu ne fais pas
appel explicitement à un contructeur de ta super-classe (à l'aide de
'super(<param>)'), c'est le constructeur par defaut ('super()') qui est
appelé...

Dans le cas présant, c'est le constructeur pas defaut de Module qui est
appelé. Ainsi, 'statut' est à 'RESOLVED'.

Avatar
Francis JUGE-BOIRARD

Bonjour,
Il suffit de tester, mais si le "super constructeur" n'est pas appellé
explicitement, status = "NULL".


Ben j'ai testé, et status = "RESOLVED" que j'utilise new Module() ou
Module.class.newInstance().
Dont acte et en plus c'est très logique....