Java 构造函数通过 super() 关键字调用会产生冲突结果

标签 java

这是我实现的用于检查继承者行为的代码

超一流

class Vehicle {

    public Vehicle(int x) {
        System.err.println("super param " +x);
    }

    public Vehicle() {
        System.err.println("super defult");
    }
}

子类

class Bus extends Vehicle {

    public Bus(int y) {
        super(y);
        System.out.println("Sub param");
    }

    public Bus() {
        super(11);
        System.out.println("Sub Class defult");
    }
}

主类是

public class TestClass {
    public static void main(String[] args) {
        new Bus();
    }
}

三个不同的结果如下所示

result 1

enter image description here

result 2

enter image description here

result 3

enter image description here

**这里发生了什么?输出的顺序与我们预期的不同**

最佳答案

在您的父类(super class)中,您打印到 System.err,但在子类中,您打印到 System.out,因此您的问题与继承无关,而是与打印的工作原理有关。

关于Java 构造函数通过 super() 关键字调用会产生冲突结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50771980/

相关文章:

java - 将 JSON 数据转换为一组 Java 对象

java - 像语法、设计模式一样解析 SQL

Java:从内部类访问 protected 字段

java - 使用 OAuth2 和 JWT : Encoded password does not look like BCrypt 的 Spring Security

java - 在 HashMap 中使用字符串数组,Java

java - Spring中如何正确使用@Async

java - 带有连接继承注释的一对多映射 :

java - 在多线程程序中获取执行时间

java - 如何从我的应用程序向另一台 Android 设备发送短信

java - 堆排序获取父级