Na classe Q05 existe um método chamado call, que tbm existe na superclasse Just.
Para utilizar o call da superclasse vc teria que usar super.call();
Então no exemplo, a classe Q05 chama pelo construtor o método call dela msma, porém o atributo B ainda não está setado (0), quando ela é instanciada.
E logo em seguida o médoto main cria outro objeto dela msma:
new Q05 ( ) ;
Porém desta vez b ja é igual a 16.
E o método call eh chamado exibindo b =16
Bom se eu estiver errado me corrijam
Espero ter ajudado
eltonk
Quando chamado “new Q05 ( );” a primeira coisa que será executado é a inicialização das variáveis de instância e em seguinda o construtor da superClasse… Neste momento b = 0 (valor padrão variáries de tipos numéricos de instância não inicializados) porque a variável de instância de Q05 ainda não foi inicializada. O construtor define que deverá ser executado o método call, mas o método está sobreescrito em Q05, por isso a saída “b = 0”.
Em seguida é a vez de inicializar as variáveis de instancia de Q05 e executaro construtor da classe, e neste momento irá imprimir b = 16…
Deu para sacar?
eltonk
Como deletar?! alguém delete esse post por favor…
eltonk
eltonk:
Outro exemplo, qual é o resultado deste deste código e porque?!