OVH Cloud OVH Cloud

héritage de constructeurs

23 réponses
Avatar
LR
Salut,

Je sais que c'est une question triviale mais je pensais que c'était clair et
finalement je reçois une erreur...

J'ai une classe Evaluation avec deux contructeurs : public Evaluation() et
public Evaluation( String content )

J'ai deux sous-classes : ClientEvaluation et WorkerEvaluation.

Je pensais que je n'aurai rien de plus à déclarer dans les sous-classes
concernant les constructeurs, je pensais qu'il seraient hérités de
Evaluation, mais non, j'ai du les déclarer car : "The constructor
ClientEvaluation(String) is undefined"...

Comment ça se fait, les constructeurs ne devraient-ils pas être hérités ?

Merci d'avance
Lilian

3 réponses

1 2 3
Avatar
Bruno CAUSSE
dans l'article 42845a48$0$5849$, Kupee à
a écrit le 13/05/05 9:41 :

Fabien Bergeret wrote:
Bof c'est inutile parfois :
int i;
if (test) {
i = 1;
} else {
i = 2;
}
on est sur d'initialiser i, pas besoin de faire une affectation
supplémentaire, même si ca sera négligeable point de vue performances


Manque de bol, une variable locale doit toujours etre initialisee, car
contrairement a un attribut, elle n'a pas de valeur par defaut ...


Je vois pas ou est le manque de bol ici justement, car dans mon exemple
la variable i sera bien initialisée soit dans la clause vrai du if soit
dans le else. Tu peux essayer ca compile et ca marche, le compilateur
est assez intelligent pour gérer ca.


Par contre

Class maClass;

if(test) {
maClass = new Class("a");
} else {
maClass = new Class("b");
}

MaClass.faitquelqueChose();

Je ne suis pas sur que ca passe a la compile.
(Pas d'outil de dev sous la main)

Il faut je crois Class maClass = null;



Avatar
Sébastien
Par contre

Class maClass;

if(test) {
maClass = new Class("a");
} else {
maClass = new Class("b");
}

MaClass.faitquelqueChose();


maClass :))


Je ne suis pas sur que ca passe a la compile.
(Pas d'outil de dev sous la main)

Il faut je crois Class maClass = null;



si si, ça marche sans le "= null".
Le compilo veut que la variable, quelle qu'elle soit, soit initialisée au moment de sa première
utilisation et il est assez intelligent pour repérer que, dans l'exemple que tu donnes, elle l'est
quoi qu'il arrive.

Sébastien

Avatar
pi314159
NON les constructeurs en java ne sont pas hérité. Tu dois spécifier le
constructeur dans chaque classe & sous classe, a moins de ne rien mettre,
alors c'est java qui fournit un constructeur par défaut lors de la
compilation. Tu peux redéfinir ou surcharger tes constructeurs, mais retiens
que les constructeurs d'objet ne sont pas hérités en java :)

Voila

MG

"LR" wrote in message
news:42834dca$
Salut,

Je sais que c'est une question triviale mais je pensais que c'était clair
et

finalement je reçois une erreur...

J'ai une classe Evaluation avec deux contructeurs : public Evaluation() et
public Evaluation( String content )

J'ai deux sous-classes : ClientEvaluation et WorkerEvaluation.

Je pensais que je n'aurai rien de plus à déclarer dans les sous-classes
concernant les constructeurs, je pensais qu'il seraient hérités de
Evaluation, mais non, j'ai du les déclarer car : "The constructor
ClientEvaluation(String) is undefined"...

Comment ça se fait, les constructeurs ne devraient-ils pas être hérités ?

Merci d'avance
Lilian




1 2 3