java - 构造函数不初始化变量

标签 java constructor

这是输出(以我的例子为例): “0 18" 但通常情况下,Checks 类的对象“checks”会在 18 时初始化 Checks 类的变量 n,但这并没有发生。

public class Connect6 {
    int n;

    public Connect6(int n) {
        this.n = n;
    }


    Checks checks = new Checks(n);


    public void place() {
        Terminal.printLine(checks.getN());
        Terminal.printLine(n);
    }
}

这是 Check 类(类 main 只是初始化一个对象 Connect6 并调用方法 place):

public class Checks {
    int n;
    public int getN() {
        return n;
    }
    public Checks(int n) {
        this.n = n;
    }   

最佳答案

Checks checks = new Checks(n);Connect6 构造函数的主体之前执行,因此 n 在时间。在 n 初始化之后,您应该在 Connect6 构造函数中创建 Checks 实例。

改变

public Connect6(int n) {
    this.n = n;
}


Checks checks = new Checks(n);

private Checks checks;
public Connect6(int n) {
    this.n = n;
    this.checks = new Checks(n);
}

关于java - 构造函数不初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49152030/

相关文章:

java - Web 进程未能在启动后 90 秒内绑定(bind)到 $PORT

C++ 2011 : good syntax to initialize an array in a constructor?

javascript - 为什么我需要为扩展函数设置构造函数?

java - PHP 向 Java 守护进程发送数据

java - 将 android.support.v7.widget.CardView 导入 Eclipse 时遇到问题

java - 在 Java 中覆盖系统属性(无代码)

java - public void - Button.setEnabled 与 if 语句适合我的情况吗?

c++ - "Industrial Strength"C++ 结构体

c# - 通用 C# 复制构造函数

c++ - 传入一个 vector 作为具有设定值的参数