我正准备参加java考试。我遇到了以下问题
String s = new String ("hello");
Object o = (object) s;
由于o
和s
都是指向同一对象的引用,因此通过引用s
引用o
对象是否有任何区别?
我是否正确地说所有对象(比如s引用的对象)都是Java中的Object
的子类,因此使用引用s
您将能够调用方法由超级Object
知道,如clone()
,String
知道的方法,如length()
。然而,超类对象引用o
只能调用它自己的方法而不是子类的方法?感谢。
答案 0 :(得分:1)
不同之处在于,通过使用o,除非将其强制转换为String,否则无法调用特定于字符串的方法。
但是,在String类上定义的任何调用o的方法都将调用该方法的更高版本。例如,o.toString()将返回“hello”,而不是Object.toString()通常返回的描述符。这称为多态。