在构造函数中初始化的变量的范围

时间:2015-08-10 20:42:11

标签: java

如果您创建了一个类,请说

public class Supplier {
    String s;

    public Supplier() {
        s = "MyString";
    }
}

现在,如果您尝试在同一个类的方法中访问s。运行代码时,变量s仍然为null。

我想知道构造函数如何影响变量。

1 个答案:

答案 0 :(得分:0)

如上所述,这种行为不可能真的发生。变量仍有几种方法可以为空:

1)在设置变量之前,您正在调用问题中的方法。例如,请考虑以下类和方法:

public class MyClass{

    private String string;

    public MyClass(){
        method();
        string = "Hello";
    }

    public void method(){
        System.out.println(string);
    }
}

使用MyClass m = new MyClass();构建对象将打印null,因为在调用method()时,尚未设置string

2)你正在调用错误的构造函数。

public class MyClass{

    private String string;

    public MyClass(){
        method();
    }

    public MyClass(String s){
        string = s;
        method();
    }

    public void method(){
        System.out.println(string);
    }
}

使用MyClass m = new MyClass();构建对象将打印null,因为在调用method()时,string尚未设置,因为我们调用了错误的构造函数。使用MyClass m = new MyClass("Hello");构建将解决此问题。