/ / Perguntas sobre superclasses de objetos e fundição - java, oop

Perguntas sobre superclasses de objetos e fundição - java, oop

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 № 1

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