是不是超级假设引用对象的对象类类型,这不是在这里创建的?
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();
}
}
是不是超级应该引用对象类类型的对象,而不是在这里创建的?
呃……没有。
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()
调用不同的方法
每个Java类都隐式继承Object
。因此,您调用由Object
定义并由类继承的方法toString
。