问题描述
- Java>Object>toString()
-
List list = new ArrayList();
list.add(0, "hello");
list.add(1, "world");
list.add(2, "javase");
Object object = list.get(2);
System.out.println(object); // android
// 结果为什么不是地址值?
解决方案
"javase"是一个String对象,String对象重写了toString()函数,所以执行的不是Object.toString,而是String.toString。
java的多态思想决定了,即使你用一个Object引用指向这个String变量,执行toString函数,调用的仍然是String.toString。
解决方案二:
java语言中的多态实现。String继承了Object;String同时重写了Object的toString()方法;父类对象object指向了子类String。同时满足了这三个条件。所以运行的时候,它会调用String的toString()方法。
时间: 2024-11-03 21:42:07