A presença de super() em construtores é opcional?
Na programação orientada a objetos, é prática comum utilizar construtores em classes derivadas para invocar Construtores em suas superclasses. No entanto, alguns desenvolvedores questionam a necessidade de especificar explicitamente super() dentro dos construtores.
Invocação automática de super() do compilador
O compilador Java insere automaticamente uma chamada para o construtor sem argumentos acessível da superclasse se o construtor da subclasse não especificar um construtor de superclasse. Isso significa que na maioria dos casos, a omissão de super() não afeta o comportamento do programa.
Exceções à regra
No entanto, existem situações onde a invocação explícita de super() é necessária:
Uso do construtor na presença de argumentos
Quando um construtor de subclasse tem argumentos, é responsabilidade do construtor da subclasse passar argumentos apropriados para o construtor de superclasse. O compilador não invocará automaticamente um construtor de superclasse com argumentos, a menos que seja explicitamente especificado.
Exemplo
Considere o seguinte código:
public class Base {
private Base() {}
}
public class Derived extends Base {
public Derived(int i) {
super(); // Call the default no-args constructor of Base
}
}
Neste exemplo, a chamada super() no construtor Derived é essencial porque Base tem um construtor privado sem argumentos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3