class a{
}
class b extends a{
String rr = "zzz";
public String toString(){
return "aa";
}
}
public class A6{
public static void main(String[] args){
b i = new b();
System.out.println(i);
}
}
输出结果是 aa。为什么会默认调用toString方法
将System.out.println(i); 改为System.out.println(i.rr);结果为zzz。为什么不会调用toString方法。
这里面System.out.println(i)调用b里面定义的toString();因为输出字符串是调用toString()方法,如果子类没有定义toString()方法则会调用父类的,如果父类没有定义则最终会调用超级父类的Object的toString()方法,然后rr是b类定义的一个属性,其对象为String,就会调用String里面的toString()方法,所有System.out.println(i.rr);其实是调用了String里面的toString()方法
1万+

被折叠的 条评论
为什么被折叠?



