Em uma classe, temos construtores que são usados para inicializar a classe. Quando, em uma relação de herança, tanto a superclasse quanto a classe filha têm construtores, os dois devem ser executados. Assinale a alternativa que indica como isso ocorre em Java.
Questão
Em uma classe, temos construtores que são usados para inicializar a classe. Quando, em uma relação de herança, tanto a superclasse quanto a classe filha têm construtores, os dois devem ser executados. Assinale a alternativa que indica como isso ocorre em Java.
Alternativas
a) Para executar o método construtor da superclasse, deve-se aplicar a palavra-chave extends. Para isso, basta chamar extends na classe filha e passar uma lista de parâmetros que o construtor da superclasse espera receber.
b) Para executar o método construtor da superclasse, deve-se aplicar a palavra- chave implements. Para isso, basta chamar implements na classe filha e passar uma lista de parâmetros que o construtor da superclasse espera receber.
c) Para executar o método construtor da superclasse, deve-se aplicar a palavra-chave super. Para isso, basta chamar super na classe filha e passar uma lista de parâmetros que o construtor da superclasse espera receber.
d) Para executar o método construtor da superclasse, deve-se aplicar a palavra-chave abstract. Para isso, basta chamar abstract na classe filha e passar uma lista de parâmetros que o construtor da superclasse espera receber.
e) Para executar o método construtor da superclasse, deve-se reescrevê-lo na classe filha. Para isso, basta chamar extends na classe filha e passar uma lista de parâmetros que o construtor da superclasse espera receber.
Explicação
Em Java, quando uma classe filha (subclasse) herda de uma superclasse, o construtor da superclasse sempre é executado durante a construção do objeto da filha.
Isso ocorre assim:
- Ao instanciar a classe filha, o Java precisa inicializar primeiro a parte “superclasse” do objeto.
- Para isso, a subclasse chama o construtor da superclasse por meio da palavra‑chave
super(...).- Se você não escrever
super(...)no construtor da filha, o compilador tenta inserir automaticamentesuper()(o construtor sem parâmetros da superclasse). - Se a superclasse não tiver construtor sem parâmetros, então você é obrigado a chamar explicitamente
super(parametros)com a assinatura correta.
- Se você não escrever
- Essa chamada a
super(...)deve ser a primeira instrução dentro do construtor da classe filha.
Logo, a alternativa correta é a que menciona a palavra‑chave super para acionar o construtor da superclasse.
Alternativa correta: (c).