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 ?
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
Tu peux toujours appeler le constructeur de la classe pere. Si c'est juste pour récupérer le nom, il faut mettre au moins le prototype et une paire d'accolades.
LR wrote:
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
Tu peux toujours appeler le constructeur de la classe pere. Si c'est
juste pour récupérer le nom, il faut mettre au moins le prototype et une
paire d'accolades.
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
Tu peux toujours appeler le constructeur de la classe pere. Si c'est juste pour récupérer le nom, il faut mettre au moins le prototype et une paire d'accolades.
Stephane Zuckerman
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 ?
Non.
Lorsque j'ai une classe Toto, si je fais new Toto(), il faut bien que la méthode Toto() existe, et ce, que Toto hérite de Titi ou pas.
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
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 ?
Non.
Lorsque j'ai une classe Toto, si je fais new Toto(), il faut bien que la
méthode Toto() existe, et ce, que Toto hérite de Titi ou pas.
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
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 ?
Non.
Lorsque j'ai une classe Toto, si je fais new Toto(), il faut bien que la méthode Toto() existe, et ce, que Toto hérite de Titi ou pas.
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Hervé AGNOUX
LR wrote:
Comment ça se fait, les constructeurs ne devraient-ils pas être hérités ?
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Donc si tu veux un constructeur acceptant un String en paramètre, il faut le déclarer dans chaque classe.
-- Hervé AGNOUX http://www.diaam-informatique.com
LR wrote:
Comment ça se fait, les constructeurs ne devraient-ils pas être hérités ?
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas
hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas
d'autres constructeurs de déclaré.
Donc si tu veux un constructeur acceptant un String en paramètre, il faut le
déclarer dans chaque classe.
Comment ça se fait, les constructeurs ne devraient-ils pas être hérités ?
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Donc si tu veux un constructeur acceptant un String en paramètre, il faut le déclarer dans chaque classe.
-- Hervé AGNOUX http://www.diaam-informatique.com
Kupee
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10 constructeurs et dire qu'une des sous classes en a que 3 et qui prennent en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un constructeur prenant une String qui est protected et la sousclasse aura un constructeur prenant une String mais qui sera lui public ... Ou même avoir un constructeur private qui ne sera pas hérité ni appelable par la sous classe. La seule chose est que la sous-classe doit obligatoirement appeler un constructeur de sa classe mère en premiere ligne de son constructeur (ou un autre constructeur d'elle même, mais l'autre aura la même contrainte). Et si on ne le fait pas le constructeur par défaut (sans paramètres) est appelé, s'il existe (sinon ca compile pas)
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas
hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas
d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10
constructeurs et dire qu'une des sous classes en a que 3 et qui prennent
en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un
constructeur prenant une String qui est protected et la sousclasse aura
un constructeur prenant une String mais qui sera lui public ...
Ou même avoir un constructeur private qui ne sera pas hérité ni
appelable par la sous classe.
La seule chose est que la sous-classe doit obligatoirement appeler un
constructeur de sa classe mère en premiere ligne de son constructeur (ou
un autre constructeur d'elle même, mais l'autre aura la même
contrainte). Et si on ne le fait pas le constructeur par défaut (sans
paramètres) est appelé, s'il existe (sinon ca compile pas)
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10 constructeurs et dire qu'une des sous classes en a que 3 et qui prennent en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un constructeur prenant une String qui est protected et la sousclasse aura un constructeur prenant une String mais qui sera lui public ... Ou même avoir un constructeur private qui ne sera pas hérité ni appelable par la sous classe. La seule chose est que la sous-classe doit obligatoirement appeler un constructeur de sa classe mère en premiere ligne de son constructeur (ou un autre constructeur d'elle même, mais l'autre aura la même contrainte). Et si on ne le fait pas le constructeur par défaut (sans paramètres) est appelé, s'il existe (sinon ca compile pas)
xav
Kupee wrote:
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10 constructeurs et dire qu'une des sous classes en a que 3 et qui prennent en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un constructeur prenant une String qui est protected et la sousclasse aura un constructeur prenant une String mais qui sera lui public ... Ou même avoir un constructeur private qui ne sera pas hérité ni appelable par la sous classe. La seule chose est que la sous-classe doit obligatoirement appeler un constructeur de sa classe mère en premiere ligne de son constructeur (ou un autre constructeur d'elle même, mais l'autre aura la même contrainte). Et si on ne le fait pas le constructeur par défaut (sans paramètres) est appelé, s'il existe (sinon ca compile pas)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Kupee wrote:
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas
hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas
d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10
constructeurs et dire qu'une des sous classes en a que 3 et qui prennent
en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un
constructeur prenant une String qui est protected et la sousclasse aura
un constructeur prenant une String mais qui sera lui public ...
Ou même avoir un constructeur private qui ne sera pas hérité ni
appelable par la sous classe.
La seule chose est que la sous-classe doit obligatoirement appeler un
constructeur de sa classe mère en premiere ligne de son constructeur (ou
un autre constructeur d'elle même, mais l'autre aura la même
contrainte). Et si on ne le fait pas le constructeur par défaut (sans
paramètres) est appelé, s'il existe (sinon ca compile pas)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire
mais généré automatiquement par tous les ide. C'est un choix arbitraire
ou motivé ?
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10 constructeurs et dire qu'une des sous classes en a que 3 et qui prennent en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un constructeur prenant une String qui est protected et la sousclasse aura un constructeur prenant une String mais qui sera lui public ... Ou même avoir un constructeur private qui ne sera pas hérité ni appelable par la sous classe. La seule chose est que la sous-classe doit obligatoirement appeler un constructeur de sa classe mère en premiere ligne de son constructeur (ou un autre constructeur d'elle même, mais l'autre aura la même contrainte). Et si on ne le fait pas le constructeur par défaut (sans paramètres) est appelé, s'il existe (sinon ca compile pas)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Kupee
xav wrote:
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
C'est un choix de style de codage en fait. Dans Intellij il ne te force pas. Certains préfèrent etre explicites et mettre le super(); d'autres pensent que c'est inutile. Un peu comme certains mettent toujours this. pour accéder aux champs ou ceux qui déclarent les champs avec leur valeur d'initialisation par défaut type private String maString = null; private int tutu = 0;
xav wrote:
A ce propos, comment se fait-il que le super() ne soit pas obligatoire
mais généré automatiquement par tous les ide. C'est un choix arbitraire
ou motivé ?
C'est un choix de style de codage en fait. Dans Intellij il ne te force pas.
Certains préfèrent etre explicites et mettre le super(); d'autres
pensent que c'est inutile.
Un peu comme certains mettent toujours this. pour accéder aux champs
ou ceux qui déclarent les champs avec leur valeur d'initialisation par
défaut type
private String maString = null;
private int tutu = 0;
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
C'est un choix de style de codage en fait. Dans Intellij il ne te force pas. Certains préfèrent etre explicites et mettre le super(); d'autres pensent que c'est inutile. Un peu comme certains mettent toujours this. pour accéder aux champs ou ceux qui déclarent les champs avec leur valeur d'initialisation par défaut type private String maString = null; private int tutu = 0;
Arnaud Berger
Bonjour,
Je ne pense pas que super() soit généré par les IDE, mais c'est plutôt le compilateur qui génère cet appel automatiquement si aucun appel au constructeur père n'est déclaré clairement.
Le choix est très motivé puisque le principe même de l'héritage serait biaisé sans cet appel automatique.
Cordialement
Arnaud
"xav" a écrit dans le message news: d5vlhn$r7v$
Kupee wrote:
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10 constructeurs et dire qu'une des sous classes en a que 3 et qui prennent en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un constructeur prenant une String qui est protected et la sousclasse aura un constructeur prenant une String mais qui sera lui public ... Ou même avoir un constructeur private qui ne sera pas hérité ni appelable par la sous classe. La seule chose est que la sous-classe doit obligatoirement appeler un constructeur de sa classe mère en premiere ligne de son constructeur (ou un autre constructeur d'elle même, mais l'autre aura la même contrainte). Et si on ne le fait pas le constructeur par défaut (sans paramètres) est appelé, s'il existe (sinon ca compile pas)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Bonjour,
Je ne pense pas que super() soit généré par les IDE, mais c'est plutôt le
compilateur
qui génère cet appel automatiquement si aucun appel au constructeur père
n'est déclaré clairement.
Le choix est très motivé puisque le principe même de l'héritage serait
biaisé sans cet appel automatique.
Cordialement
Arnaud
"xav" <xav14@free.fr> a écrit dans le message news:
d5vlhn$r7v$2@kane.laas.fr...
Kupee wrote:
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas
hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas
d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10
constructeurs et dire qu'une des sous classes en a que 3 et qui prennent
en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un
constructeur prenant une String qui est protected et la sousclasse aura
un constructeur prenant une String mais qui sera lui public ...
Ou même avoir un constructeur private qui ne sera pas hérité ni
appelable par la sous classe.
La seule chose est que la sous-classe doit obligatoirement appeler un
constructeur de sa classe mère en premiere ligne de son constructeur (ou
un autre constructeur d'elle même, mais l'autre aura la même
contrainte). Et si on ne le fait pas le constructeur par défaut (sans
paramètres) est appelé, s'il existe (sinon ca compile pas)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire
mais généré automatiquement par tous les ide. C'est un choix arbitraire
ou motivé ?
Je ne pense pas que super() soit généré par les IDE, mais c'est plutôt le compilateur qui génère cet appel automatiquement si aucun appel au constructeur père n'est déclaré clairement.
Le choix est très motivé puisque le principe même de l'héritage serait biaisé sans cet appel automatique.
Cordialement
Arnaud
"xav" a écrit dans le message news: d5vlhn$r7v$
Kupee wrote:
Hervé AGNOUX wrote:
Non, pour je ne sais plus quelle raison les constructeurs ne sont pas hérités. Seul le constructeur par défaut est fourni, s'il n'y a pas d'autres constructeurs de déclaré.
Pour un tas de bonnes raisons, on peut avoir une classe avec 10 constructeurs et dire qu'une des sous classes en a que 3 et qui prennent en plus pas les mêmes paramètres. Ou alors avoir une classe avec un un constructeur prenant une String qui est protected et la sousclasse aura un constructeur prenant une String mais qui sera lui public ... Ou même avoir un constructeur private qui ne sera pas hérité ni appelable par la sous classe. La seule chose est que la sous-classe doit obligatoirement appeler un constructeur de sa classe mère en premiere ligne de son constructeur (ou un autre constructeur d'elle même, mais l'autre aura la même contrainte). Et si on ne le fait pas le constructeur par défaut (sans paramètres) est appelé, s'il existe (sinon ca compile pas)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Stephane Zuckerman
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Tu n'es pas obligé d'appeler le constructeur de ta super classe, tout simplement.
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire
mais généré automatiquement par tous les ide. C'est un choix arbitraire
ou motivé ?
Tu n'es pas obligé d'appeler le constructeur de ta super classe, tout
simplement.
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Tu n'es pas obligé d'appeler le constructeur de ta super classe, tout simplement.
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
xav
Kupee wrote:
xav wrote:
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
C'est un choix de style de codage en fait. Dans Intellij il ne te force pas. Certains préfèrent etre explicites et mettre le super(); d'autres pensent que c'est inutile. Un peu comme certains mettent toujours this. pour accéder aux champs ou ceux qui déclarent les champs avec leur valeur d'initialisation par défaut type private String maString = null; private int tutu = 0;
L'éternel dilemme entre la lisibilité et le perfectionnisme :o
Perso, je mets toujours les super et les this. Pour ce qui est des initialisations, il n'y en a pas 36 possibles, 0 pour les types de bases ou null pour les objets, je trouve que c'est vraiment enfoncer des portes grandes ouvertes.
Kupee wrote:
xav wrote:
A ce propos, comment se fait-il que le super() ne soit pas obligatoire
mais généré automatiquement par tous les ide. C'est un choix
arbitraire ou motivé ?
C'est un choix de style de codage en fait. Dans Intellij il ne te force
pas.
Certains préfèrent etre explicites et mettre le super(); d'autres
pensent que c'est inutile.
Un peu comme certains mettent toujours this. pour accéder aux champs
ou ceux qui déclarent les champs avec leur valeur d'initialisation par
défaut type
private String maString = null;
private int tutu = 0;
L'éternel dilemme entre la lisibilité et le perfectionnisme :o
Perso, je mets toujours les super et les this. Pour ce qui est des
initialisations, il n'y en a pas 36 possibles, 0 pour les types de bases
ou null pour les objets, je trouve que c'est vraiment enfoncer des
portes grandes ouvertes.
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
C'est un choix de style de codage en fait. Dans Intellij il ne te force pas. Certains préfèrent etre explicites et mettre le super(); d'autres pensent que c'est inutile. Un peu comme certains mettent toujours this. pour accéder aux champs ou ceux qui déclarent les champs avec leur valeur d'initialisation par défaut type private String maString = null; private int tutu = 0;
L'éternel dilemme entre la lisibilité et le perfectionnisme :o
Perso, je mets toujours les super et les this. Pour ce qui est des initialisations, il n'y en a pas 36 possibles, 0 pour les types de bases ou null pour les objets, je trouve que c'est vraiment enfoncer des portes grandes ouvertes.
Kupee
Stephane Zuckerman wrote:
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Tu n'es pas obligé d'appeler le constructeur de ta super classe, tout simplement.
Si tu es OBLIGE de le faire. Seulement le compilateur pour te simplifier la vie le fait automatiquement, mais ca ne marche qu'a la condition qu'un constructeur sans paramètres soit disponible
Stephane Zuckerman wrote:
A ce propos, comment se fait-il que le super() ne soit pas obligatoire
mais généré automatiquement par tous les ide. C'est un choix arbitraire
ou motivé ?
Tu n'es pas obligé d'appeler le constructeur de ta super classe, tout
simplement.
Si tu es OBLIGE de le faire. Seulement le compilateur pour te simplifier
la vie le fait automatiquement, mais ca ne marche qu'a la condition
qu'un constructeur sans paramètres soit disponible
A ce propos, comment se fait-il que le super() ne soit pas obligatoire mais généré automatiquement par tous les ide. C'est un choix arbitraire ou motivé ?
Tu n'es pas obligé d'appeler le constructeur de ta super classe, tout simplement.
Si tu es OBLIGE de le faire. Seulement le compilateur pour te simplifier la vie le fait automatiquement, mais ca ne marche qu'a la condition qu'un constructeur sans paramètres soit disponible