Esse foi uma curiosidade que surgiu em uma pequena discusão aqui no meu trabalho.
Como que a JVM trata a herança no bytecode?
Ela copia todos os atributos da classe pai para a filha?
Instancia a classe pai e mantem uma referencia na filha?
Usa reflection para fazer chamadas em Runtime?
Alguem ai tem alguma ideia de como isso é feito?
tem um topico no Java Ranch falando sobre isso, mas o topico é meio antigo, e aparentemente não chegaram a uma conclusão.
[quote=Felagund]Esse foi uma curiosidade que surgiu em uma pequena discusão aqui no meu trabalho.
Como que a JVM trata a herança no bytecode?
Ela copia todos os atributos da classe pai para a filha?
Instancia a classe pai e mantem uma referencia na filha?
Usa reflection para fazer chamadas em Runtime?
Alguem ai tem alguma ideia de como isso é feito?
tem um topico no Java Ranch falando sobre isso, mas o topico é meio antigo, e aparentemente não chegaram a uma conclusão.
[]'s[/quote]
Ela copia os atributos da classe pai para a classe filha.
Ela NÃO instancia a classe pai; os construtores da classe pai podem ser chamados (via “super”) e alteram os atributos adequados.
Não há uso de reflection nesse caso; no carregamento da classe filha é necessário ter o código da classe pai disponível, justamente para obter os atributos (e chamar os construtores e métodos estáticos, se for o caso), mas a instância em si da classe filha não contém uma instância da classe pai.