Ola a todos, o codigo abaixo foi retirado de um livro que estou estudando para certificacao:
class Pai{
Pai(String s){
System.out.println("Robertao");
}
}
public class Filho extends Pai{
Filho(String s){//esta linha causa erro de compilacao, mas no livro diz que a saida seria Robertao Robertinho
System.out.println("Robertinho");
}
public static void main(String[] args) {
new Filho("R");
}
}
A linha que eu comentei diz que e preciso invocar explicitamente um construtor, porque a chamada super() esta indefinida, se eu retirar os argumentos do construtor da classe Pai funciona e a resposta e a mesma do livro.
Minha pergunta e, o exemplo do livro ta errado mesmo? Obrigado a todos.
Se o livro fala que compila, tá errado.
Sei qual livro é… hehhee.
em relação a pergunta:
você teria 2 maneiras de contornar o problema.
1 -criando uma chamada a super(“string aqui”) dentro do contrutor da classe filho.
2 - Criar um contrutor sem argumentos na classe pai.
isso porque a chamada implicita a super sempre é feita sem argumentos, como a classe pai não tem um contrutor sem argumentos… não compila.
obs: quando você cria um contrutor com argumento, não é criado outro sem argumento automaticamente.
Obrigado pela ajuda amigos, é complicado quando voce ta aprendendo e pega um exemplo que não funciona, sobre a dica de mudar o construtor da classe pai deixando-o sem argumento, foi o que fiz e foi como funcionou de acordo com a resposta da pergunta. Valeu pela explicação.
Também sei qual livro é :lol:
Infelizmente acontence, mas nao devia…
Pois é Lucas, mas acaba sendo bom porque você se dedica a descobrir o que faria o código funcionar, as vezes o erro é até de edição, mas o negocio é seguir em frente estudando, e sempre que possivel, contando com a ajuda dos amigos aqui do forum.
Abraço.