Por que super () e isso () não aparecem em um construtor ao mesmo tempo?

Java estipula que o construtor da classe pai deve ser executado antes que o construtor seja executado, até que essa classe seja o construtor da classe java.lang.Object.
No entanto, o ponto de entrada da função é o construtor da subclasse, portanto, a primeira frase de qualquer construtor deve ser o construtor pai.Se a palavra-chave super não for adicionada, o compilador adicionará uma instrução super () à primeira frase do construtor ( Você pode entender isso, é claro, esse não é o caso após a compilação). Se houver uma super palavra-chave para chamar o construtor da classe pai, o construtor da classe pai especificado será usado, caso contrário, o construtor sem parâmetros padrão será usado. Também há uma exceção a isso, é que existe this (), que chama outros construtores dessa classe, mas, de acordo com a chamada recursiva, o construtor pai será chamado; se isso () e super () existir, a inicialização da classe pai aparecerá. Duas operações inseguras, porque quando super () e this () aparecerem ao mesmo tempo, este () será executado depois que super () for chamado e super () será automaticamente chamado neste (), que é Isso causou o resultado de chamar super () duas vezes. .

Se a classe pai que você herdou não tiver um construtor sem parâmetros, a primeira frase da sua classe deverá chamar a super palavra-chave para chamar o construtor parametrizado correspondente à classe pai, caso contrário, não poderá ser compilado.

Publicado 6 artigos originais · elogiado 8 · visitas 138

Acho que você gosta

Origin blog.csdn.net/qq_42848910/article/details/104481271
Recomendado
Clasificación