Eu estou me preparando para um exame java. Me deparei com a seguinte pergunta
String s = new String ("hello");
Object o = (object) s;
Desde a o
e s
são ambas as referências que apontam para o mesmo objeto, existe alguma diferença no acesso ao objeto através da referência s
sobre a referência o
?
Estaria correto em dizer que todos os objetos (como o que é referência por s) são subclasses de Object
em Java e, como tal, usando a referência s
você poderá chamar os métodos conhecidos pela superclasse Object
gostar clone()
e os métodos conhecidos por String
gostar length()
. Considerando que, a referência de objeto da superclasse o
só será capaz de chamá-lo de métodos próprios e não os da subclasse? Obrigado.
Respostas:
1 para resposta № 1A diferença é que, ao usar o, você não poderá chamar métodos específicos de string, a menos que você a envie de volta para String.
No entanto, qualquer método que você chama de o que édefinido na classe String irá chamar a versão mais recente do método. Por exemplo, o.toString () retornará "hello" e não o descritor que o Object.toString () normalmente retorna. Isso é chamado de polimorfismo.