class A {
}
class B extends A {
String tmp = "tmp";
@Override
public String toString() {
return "hello";
}
}
public class C {
public static void main(String[] args) {
B b = new B();
System.out.println(b);
}
}
输出结果是 hello。
如果将System.out.println(b); 改为System.out.println(b.tmp);结果为hello。
1、这里面System.out.println(b)是打印b对象,所以调用b里面定义的toString();
2、System.out.println(b.tmp) 是打印tmp,因为tmp是b类定义的一个成员变量,为String类型,所以会调用String里面的toString()方法。
3、toString()是java中的一个内置方法,很多object都支持toString这个方法。而如果你在类里编写了toString(),相当于覆盖了类中原有的toString(),在System.out.print中会自动调用。