java - 从父类(super class)构造函数调用父类(super class)方法

标签 java inheritance

我有一个关于以下代码片段的非常简单的问题。

public class SuperClass {

    public SuperClass() {
        this.test();  //Always invokes the overridden method in the sub-class.
    }

    public void test() {
        System.out.println("test() in SuperClass.");
    }
}

public final class SubClass extends SuperClass {

    public SubClass() {
        super();        
    }

    @Override
    public void test() {        
        System.out.println("test() in SubClass.");
    }
}

public final class Test {

    public static void main(String... args) {
        SubClass subClass=new SubClass();
    }
}

在此示例中,main() 中的唯一一行方法间接传递对父类(super class)构造函数的调用,并在其中尝试调用 test()方法为this.test() .

this.test()调用的方法然而,在父类(super class)构造函数中, SubClass 中的重写方法.

为什么该方法不调用this.test()在父类(super class)构造函数中调用父类(super class)本身中的自己的方法(尽管this指的是要调用this方法的当前实例)?

最佳答案

though[t] this refers to the current instance by which this method is to be invoked

确实如此,并且该实例的运行时类型是 SubClass,因此会调用 SubClass 的方法。

关于java - 从父类(super class)构造函数调用父类(super class)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837750/

相关文章:

java - 包含外部 jar 中的类的 JPA 实体

java - 使用java swing在正方形内绘制菱形

javax.validation.ConstraintViolationException : validation failed for classes during update time for groups

ios - 无法使用自定义类返回类型覆盖方法

java - neo4j条件关系

java - Hibernate 为@ManyToOne JPA 注释属性创建 N+1 查询

c# - 关于重构为抽象类的基本问题

C++,关于继承的基础知识

inheritance - Dojo 小部件声明字符串 - 它是临时的吗?

python - 如何为 Django 中的所有模型编写 __str__ 方法的通用实现?