2013-02-05 5 views
0

Pourquoi la compilation échoue-t-elle dans ce cas?Pourquoi la compilation échoue?

Est-ce ce qui est arrivé? : constructeur de Employee appelle default constructor of Person et c'est tout.

enter image description here

+0

ce n'est pas un devoir, j'ai vraiment besoin de votre aide. –

+3

Que s'est-il passé quand vous l'avez essayé et quand vous avez recherché l'erreur qu'avez-vous trouvé? –

+0

compilation échoue vraiment, avec un tas d'erreurs http://ideone.com/5gHWyr –

Répondre

0

Vous devez appeler un constructeur en personne lors de la construction d'un employé. Par défaut, le compilateur appellera le constructeur par défaut (sans arguments), mais dans ce cas, il n'existe pas dans Person (le compilateur crée un constructeur par défaut uniquement s'il n'existe pas d'autre constructeur).

Vous devez appeler un constructeur concret de Person dans la première ligne du constructeur Employee, ou définir un constructeur par défaut dans Person.

7

comme constructeur de la classe super ne dispose pas d'un constructeur par défaut non-args définie, vous devez faire explicitement un appel à constructeur 1-args de votre super-classe de votre constructeur de sous-classe. Ainsi réponse est D erreur de compilation sur la ligne 18

Pour corriger le code:

public Employee(String id){ 
super("pass person name"); 
//rest of the code 
} 
+0

mais je n'ai pas besoin de faire cela, j'ai trouvé une alternative en utilisant la chaîne 'empID'! pourquoi la compilation ne réussit pas? –

+0

Eh bien, si votre nom de personne est un EmpId alors ce serait le faire .. :), ce n'était qu'un exemple de code au fait .. :) – PermGenError

+0

vous toujours pas répondu à ma question! Pourquoi le compilateur ** TALK ** dans ce cas. pour 'lui' il créera deux constructeurs par défaut et c'est tout ...?! –

0

Je pense que vous pouvez assumeriez personne a un constructeur par défaut. Le compilateur insère uniquement un constructeur par défaut s'il n'y a pas de constructeur déclaré. Si vous voulez que Person ait un constructeur sans-arg, vous devez en déclarer un.

Questions connexes