[DÚVIDA] - Construtores

Bom, estou estudando sobre construtores e me veio uma dúvida: Por que o construtor da subclasse sempre chama de forma implícita ou não o construtor da Superclasse ?

Porque uma subclasse é uma especialização da superclasse, ou seja, é a superclasse e mais alguma coisa.
Por isso antes fazer as inicializações da subclasse, é necessário fazer as inicializações da superclasse.

Mas a Superclasse já não tem la o construtor dela inicializando ela ?

Acho que este exemplo vai clarear suas idéias…

Imagina que exista um pacote chamado ‘renault’ e nesse pacote alguém criou uma classe chamada ‘Duster’.

Depois de algum tempo alguém criou uma classe chamada ‘Oroch’ que estende a classe ‘Duster’.

A classe ‘Oroch’ possui um atributo adicional chamado ‘caçamba’.

Quando a fábrica instanciar um ‘Oroch’, você espera obter um ‘Duster’ com ‘caçamba’, ou só uma ‘caçamba’ sem o resto do ‘Duster’?

Entendi !
Eu pensava que esse processo a própria keyword extends é quem fazia.

Então deixa eu ver se entendi mesmo. Uma subclasse sempre precisa dessa chamada a Super() pois assim todos os atributos da superclasse (Dependendo do modificador de acesso) são “Construídos” dentro da subclasse, subclasse esta que por sua vez tem seus próprios atributos, certo ? de forma resumida é como se eu declarasse o construtor da superclasse dentro do construtor da minha subclasse.

Entendi certo ?

Não, o extends só serve para dizer que a subclasse especializa a superclasse.

[quote=“Rogerio_Cruzz, post:6, topic:356410”]
Uma subclasse sempre precisa dessa chamada a Super() pois assim todos os atributos da superclasse (Dependendo do modificador de acesso) são “Construídos” dentro da subclasse, subclasse esta que por sua vez tem seus próprios atributos, certo ?[/quote]

Você não é obrigado a escrever a chamada ao super, ela acontece implicitamente, o compilador só te obriga a escrever o super, caso o construtor da superclasse precise receber parâmetros.
Todos os atributos da superclasse são inicializados (indiferente do modificador de acesso).
Entenda o seguinte: a superclasse faz parte da subclasse!
Por isso muitos autores preferem composição ao invés da herança, pois a herança gera um acoplamento forte entre as classes.

Não, você não redeclara o construtor da superclasse, ele somente é a primeira coisa a ser executada quando você faz um new da sua subclasse.
Seguindo a analogia do Duster e do Oroch, quando for montar um Oroch tem que primeiro montar o Duster para ter onde encaixar a caçamba do Oroch.