Você deve chamar explicitamente o construtor de superclasse em subclasses Java?
Ao definir uma subclasse, é uma prática comum ver construtores que chamam explicitamente o construtor de superclasse usando super(). No entanto, pode-se questionar se isso é necessário.
O super() é adicionado automaticamente pelo compilador?
Sim, se o construtor da subclasse omitir uma chamada para a superclasse construtor, o compilador chamará automaticamente o construtor sem argumentos acessível (construtor sem argumentos) na superclasse. Esse comportamento padrão é conhecido como encadeamento de construtor.
Tipos de construtores
Quando super() é obrigatório?
Usar super() explicitamente só é obrigatório if:
Exemplo 1:
public class Base {}
public class Derived extends Base {}
Nenhuma chamada explícita para super() é necessária porque Base tem um construtor padrão.
Exemplo 2:
public class Base {
public Base(int i) {}
}
public class Derived extends Base {
public Derived(int i) {
super(i); // Explicitly call the Base(int) constructor
}
}
Nesse caso, super(i) é necessário porque a superclasse não possui um construtor sem argumentos e o construtor da subclasse precisa fornecer um valor inicial para seu parâmetro i.
Ao compreender esses conceitos, você pode evitar chamadas super() desnecessárias e garantir o encadeamento adequado do construtor em suas subclasses.
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