不是超级假设要引用此处未创建的Object类类型的对象吗?
public class SuperChk
{
void test()
{
System.out.println(super.toString());
}
public static void main(String[] args)
{
SuperChk sc1 = new SuperChk();
System.out.println(sc1);
sc1.test();
}
}
答案 0 :(得分:3)
是不是超级假设引用这里没有创建的Object类类型的对象?
呃...不。
super
关键字(当以这种方式使用时)表示“想要引用this
,但被视为其超类的实例”。这是子类调用超类中可能已被覆盖的方法的方式。
java.lang.Object
类是所有引用类型的最终超类,您的SuperChk
类也不例外。您的SuperChk
班级有toString()
方法(继承自Object
)且super.toString()
正在调用它。
现在在您的示例中,super.
是多余的,因为SuperChk
不会覆盖String。但这里有一个不冗余的例子......
public class SuperChk {
private void test() {
System.out.println(toString());
System.out.println(super.toString());
}
@Override
public String toString() {
return "Hello world";
}
public static void main(String[] args) {
SuperChk sc1 = new SuperChk();
sc1.test();
}
}
如果你编译并运行它,你会发现toString()
和super.toString()
正在调用不同的方法。
答案 1 :(得分:0)
每个Java类都从toString
隐式继承。因此,您调用由Object
定义并由您的类继承的方法{{1}}。