Questao 49 testkiller 2003-2004

3 respostas
Markinhus86

QUESTAO 49

  1. class Person {
  2. String name = " No name";
  3. public Person (String nm) {name = nm; }
  4. }
  5. class Employee extends Person {
  6. String empID = “0000”;
  7. public Employee(String id) { empID = id; }
  8. }

A resposta indica que tem erro na linha 18… Qual seria esse erro? … nao consigo identificar…
Obrigado

3 Respostas

taaqui

A regra é, o construtor de Employee (sub-classe) vai fazer sempre uma chamada super(); sem argumentos ao construtor da super-classe, como na super classe já tem um construtor com argumentos ele não va criar um automaticamente, compilaria sem erros se tivesse um construtor sem argumentos na super-classe, ou não tivesse aquele construtor com argumentos public Person (String nm){}, ou construtor de sub-classe (Employee) tivesse uma chamada a super com argumentos super(id);.

Compilaria assim:
class Person {
 String name = " No name";
 public Person (String nm) {name = nm; }
 
 public Person(){}
 }

 class Employee extends Person {
 String empID = "0000";
 public Employee(String id) { 
	 empID = id; }
 }
ou assim:
class Person {
 String name = " No name";
 }

 class Employee extends Person {
 String empID = "0000";
 public Employee(String id) { 
	 empID = id; }
 }
Ou assim:
class Person {
 String name = " No name";
 public Person (String nm) {name = nm; }
 }

 class Employee extends Person {
 String empID = "0000";
 public Employee(String id) { 
	 super(id);
	 empID = id; }
 }
Nykolas_Lima

A primeira linha de um construtor é SEMPRE uma chamada à super().

Caso você não escreva explicitamente, vai ser posto uma padrão ali que é o super();

Como a sua classe estende uma classe que tem um construtor sobrecarregado, ela deve chamar esse construtor com uma chamada explicita a super(String).

Como voce não sobrecarregou o super na primeira linha do construtor, foi inserido o super() padrão.

Como na classe pai não existe nenhum construtor sem argumentos a classe não compila.

Flw

Markinhus86

ok… entendi… Muito Obrigado

Criado 8 de abril de 2009
Ultima resposta 8 de abr. de 2009
Respostas 3
Participantes 3