pq?! bom pq apesar de estar instanciando uma classe Subclass, vc está atribuindo ela a um Base, que eh de onde Subclass extende, vc pode fazer isso, porém o que vai ser instanciado eh uma Base, e nao a Subclass…
não sei se ficou claro a explicaçao… mas as saídas acho que é isso ai…
está certo?!
P
psilvaPJ
Saida 2 e 3
3 porque o metodo int method() foi sobrescrito na subclasse.
B
BrainnPJ
(para jujo)
Cara, não é isso!
Tbm não sei explicar… :oops:
S
Samuel_PessorrussoPJ
saída 2 e 3
quando você acessa uma variável, o que é levado em conta é o tipo do tempo de Compilação, como o tipo é “Base” então a saída é 2
quando você acessa um método, o que é levado em conta é o tipo do tempo de execução, como o tipo do tempo de execução é “SubClass” a saída é 3.Isto é válido quando o tipo do tempo de execução sobrescreve algum método do tipo do tempo de compilação.
É isso ai mesmo… nem tinha me ligado no Overriding =)
é verdade… por exemplo se a classe Subclass tivesse um outro método tipo escreve(), esse método não seria acessivel ao objeto criado… pq? pq o objeto é da classe Base, e nao Subclass… em teoria eh isso… alguem pode testar e postar o resultado na prática?!
eu não compilei, e nem rodei mas eu acho que eh isso mesmo!
Cya!
F
FelipePJ
a saida vai ser 3 e 3, pq a classe eh uma referencia para Subclass, e nao para Base, portanto prevalece o x do Subclass