java - 父类(super class)和子类中的构造函数

标签 java

下面有一段代码

public class Super {

    public  Super (){
        System.out.println(this.toString());
    }

    public String toString(){
        return "I am Super";
    }
}


public class Sub extends Super {

    public Sub() {
        System.out.println(toString());
    }

    public String toString() {
        return "I am SubClass";
    }
}


public class test {

    public static void main (String [] args){
         Sub ss = new Sub();

    }
}

//结果

我是子类

我是子类

根据理论,它应该先调用父类(super class)构造函数,然后再调用子类。 但是当我执行它时,它总是打印子类构造函数

最佳答案

虽然它会首先调用 super 类构造函数,但将调用的 toString() 方法是运行时类型的实现(如果有的话)。由于所创建的对象属于 Sub 类型,因此将调用 SubtoString() 实现。这就是多态性的基础。

关于java - 父类(super class)和子类中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523796/

相关文章:

java - Avro - 反序列化 POJO

java - 运行大量数据时与 platfOrm 的连接重置

java - Cometd 服务器广播 channel 自动删除

java - 搜索文本文件中包含的文本并将它们从java中的另一个文本文件中删除

java - 了解 Swing 计时器

java - b=b++ 和 b++ 的区别

java - 如何使用 Jersey (Java) 通过 Rest API 上传 csv 文件?

java - If 和 else GUI。在所有其他条件下只有一个输出

java - 将 Curl 转换为 Java 等价物

java - Apache Tomcat 8 不工作。抛出 HTTP 状态 500 - java.lang.ClassNotFoundException : org. apache.jsp.index_jsp