3

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

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

既然os都是指向同一个对象的引用,那么通过引用而不是引用访问对象有什么区别so

我是否正确地说所有对象(例如被 s 引用的对象)都是ObjectJava 中的子类,因此使用引用s您将能够调用超类Objectlike已知的方法和likeclone()已知的方法。然而,超类对象引用只能调用它自己的方法,而不能调用子类的方法?谢谢。Stringlength()o

4

1 回答 1

1

不同之处在于,使用 o 将无法调用特定于字符串的方法,除非将其转换回 String。

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

于 2012-05-08T19:03:03.267 回答