Como a JVM trata Herança no ByteCode?

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.

http://www.coderanch.com/t/378741/Java-General-intermediate/java/Inheritance-Bytecode

Vejam ai acima o link, é um ponto de partida.

[]'s

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

http://www.coderanch.com/t/378741/Java-General-intermediate/java/Inheritance-Bytecode

Vejam ai acima o link, é um ponto de partida.

[]'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.

Maravilha,

Mas só indo mais a fundo

nesse artigo da IBM: http://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/

mostra como ver um arquivo bytecode de uma forma mais legivel, porem nele não é visivel nada a respeito de superclasses.
é tudo usando invocações.