用增强for循环遍历集合的所有值时,
这里的toString方法应该是Object中的原始toString方法,输出对象名和哈希值才对;
结果输出是按照重写后的方法,那这个toString是调用哪里的呢?
public class keySettest {
public static void main(String[] args) {
HashMap table = new HashMap();
table.put("jack", new Student("jack", 12));
table.put("tome", new Student("tome", 12));
table.put("lucy", new Student("lucy", 12));
Collection values = table.values();
//增强for循环遍历集合的所有值
for (Object object : values) {
System.out.println(object);
//循环输出object类型的变量,应该是调用toString方法
//这里的toString方法应该是Object中的原始toString方法,输出对象名和哈希值才对
//结果输出是按照重写后的方法,那这个toString是调用哪里的呢?
}
}
}
这里的toString方法应该是Object中的原始toString方法===这不对吧。values中的对象都是Student类,这个类是不是有toString方法?第10行应该调用的是Student类的toString。多态性会自动调用子类的重载函数
因此,在使用增强for循环遍历集合中的元素时,当输出一个对象时,实际上是调用该对象的toString()方法。在上面的代码中,当输出一个Student对象时,实际上是调用该对象所属的Student类中重写后的toString()方法,以获取学生的姓名和年龄等信息。
如果帮您解决问题,麻烦点一下采纳