难道不是超级要引用此处未创建的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();
        }
    }

最佳答案

难道不是超级要引用此处未创建的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()调用不同的方法。

10-05 18:07