Teste1t1=newTeste1();t1.show();t=t1; // <---- t não irá receber todas as propriedades de t1? t.show(); // por que não apresenta a mensagem do método da Classe Teste1?
Teste1t1=newTeste1(); t1.show(); t=t1; // <---- t não irá receber todas as propriedades de t1? t.show(); // por que não apresenta a mensagem do método da Classe Teste1?
}
}
LecaDF
t = t1
mas por que na linha na qual eu passa ao objeto da classe Teste que é t o objeto da classe Teste1 ele não executa o método mesmo estático na qual faz referência o objeto t1.
Obrigado.
J2Alex
Quando os métodos são estáticos, eles são referenciados durante a compilação. Assim sendo, se o tipo de t é Teste, a chamada de métodos estáticos será definida durante a compilação - ou seja, não importa se vc instancia a classe Teste1, os métodos estáticos chamados serão sempre de Teste, que é o tipo do objeto t. Por isso estes métodos são estáticos.
Para os outros métodos aplica-se “late binding” ( ligação tardia ), onde se definirá qual método chamar na hora da execussão.
Uma boa estudada em OOP pode ajudar a esclarecer esse tipo de dúvida, que não é inerente à linguagem Java, mas um conceito OOP.