"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 > Quando `super ()` é realmente necessário em um construtor?

Quando `super ()` é realmente necessário em um construtor?

Publicado em 2025-01-31
Navegar:638

 When is `super()` Really Necessary in a Constructor?

super () no construtor: uma questão de necessidade

no reino da programação orientada a objetos, os construtores desempenham um papel crucial na inicialização objetos recém -criados. No entanto, surge a pergunta: é essencial chamar explicitamente o método super () no construtor de uma subclasse? ) Chamada, o compilador chama automaticamente o construtor de não-ARGS acessível na superclasse. Este construtor não possui parâmetros e é vital para inicializar corretamente os membros da instância da superclass. um construtor na superclasse com uma lista de argumentos correspondente. Se nenhum construtor correspondente for encontrado, ocorre um erro. Em outras palavras, o construtor invocado via super () deve ter argumentos que correspondam exatamente aos argumentos passados ​​ao construtor da subclasse. O construtor de args na superclasse deve ser visível para a subclasse. Se o construtor da Superclass for privado ou protegido, é necessária uma chamada explícita para super () com argumentos apropriados para invocar o construtor correto. , considere os seguintes trechos de código:

classe pública base {// no-args construtor} classe public Derived Extends Base {// Construtor padrão será chamado pelo compilador}

Nesse caso, o construtor padrão na base será invocado automaticamente quando uma instância de derivada for criada. Derivado (int i) {super (i); }}

aqui, o construtor no derivado invoca explicitamente o construtor correspondente na base com o argumento i.

classe pública base {private base () {}} classe public Derived Extensnds Base {} // Erro: nenhum construtor de não-args acessível no superclass

esse código resulta em um erro porque o construtor da base é privado e não é acessível à subclasse. O compilador chama automaticamente o construtor de não-ARGs acessível na superclasse, as chamadas explícitas super () são essenciais quando o construtor de uma subclasse tem argumentos ou quando o construtor da superclasse não estiver acessível. Compreender essas nuances é crucial para garantir a inicialização adequada do objeto em Java.

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