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.
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