关于对象超类和转换的问题

时间:2012-05-08 18:53:41

标签: java oop

我正准备参加java考试。我遇到了以下问题

String s = new String ("hello");
Object o = (object) s;

由于os都是指向同一对象的引用,因此通过引用s引用o对象是否有任何区别?

我是否正确地说所有对象(比如s引用的对象)都是Java中的Object的子类,因此使用引用s您将能够调用方法由超级Object知道,如clone()String知道的方法,如length()。然而,超类对象引用o只能调用它自己的方法而不是子类的方法?感谢。

1 个答案:

答案 0 :(得分:1)

不同之处在于,通过使用o,除非将其强制转换为String,否则无法调用特定于字符串的方法。

但是,在String类上定义的任何调用o的方法都将调用该方法的更高版本。例如,o.toString()将返回“hello”,而不是Object.toString()通常返回的描述符。这称为多态。