"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Você deve sempre usar `super()` em construtores?

Você deve sempre usar `super()` em construtores?

Publicado em 2024-11-25
Navegar:829

Should You Always Use `super()` in Constructors?

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:

  • Se a superclasse não tiver um construtor sem argumentos acessível.
  • Se o construtor da subclasse tiver argumentos e a superclasse tem um construtor que aceita argumentos.
  • Se o construtor da subclasse precisar invocar um construtor específico na superclasse diferente do construtor padrão sem argumentos.

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.

Tutorial mais recente Mais>

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