复写toString()方法



例子:

       
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()方法

你可能感兴趣的:(复写toString()方法)