我正在执行此操作,我无法理解为什么会执行此操作并在两行中打印BB。
class A {
public String toString(){
return this.getClass().getSimpleName();
}
}
class B extends A {
public String toString(){
return super.toString() + this.getClass().getSimpleName();
}
}
public class Main {
public static void main(String[] args) {
A a = new B();
B b = new B();
System.out.println(a);
System.out.println(b);
}
}
答案 0 :(得分:3)
java中每个对象只有一个类名。如果你想知道超类的名字,你必须使用:new B()
。
由于这两个对象都是super.toString()
,因此如果您正在调用toString()
或B
并不重要,则两者都将返回类getClass()
的名称,因为{ {1}}始终返回您使用new
创建的类的名称。