如何让构造方法中定义的对象对类的其他方法可见?
解决方法:将局部变量改为类成员变量
当然可以实现!你当前的问题在于,calc1和calc2是构造方法中的局部变量,它们的作用域仅限于构造方法内部,所以其他方法根本看不到它们。要在保持构造方法初始化对象的前提下让其他方法访问,只需要把这两个变量提升为类的成员变量即可。
修改后的代码示例:
class Number { // 声明为类的成员变量,作用域覆盖整个类 private Calculator calc1; private Calculator calc2; public Number(int num1, int num2) { // 在构造方法中初始化成员变量 calc1 = new Calculator(num1); calc2 = new Calculator(num2); } public void displayNumber() { // 现在可以直接访问成员变量了 System.out.println(calc1.result); } }
关键说明:
- 把
calc1和calc2的声明移到类的内部、所有方法之外,成为类的成员变量,这样整个类的方法都能访问它们; - 保留在构造方法中对这两个变量的初始化逻辑,完全符合你“仍于构造方法中初始化对象”的要求;
- 给成员变量加上
private修饰符是良好的封装习惯,避免外部直接修改这些内部对象,如果后续需要外部访问,可以添加对应的getter方法。
内容的提问来源于stack exchange,提问作者chad
相关产品推荐
相关产品推荐

