Как сделать объект, определенный в конструкторе, видимым для остальной части класса - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь получить доступ к объекту, определенному в конструкторе, из метода того же класса.

Возможно ли, чтобы другой метод получил доступ к объекту, все еще инициализируя его в конструкторе?

class Number {
    public Number (int num1, int num2) {
        Calculator calc1 = new Calculator(num1);
        Calculator calc2 = new Calculator(num2);
    }

    public void displayNumber() {
        System.out.println(calc1.result);
    }
}

Ответы [ 4 ]

0 голосов
/ 09 мая 2018

Вы не можете получить доступ к локальной переменной за пределами области действия.

// Here calc1 and calc2 are scoped only to the constructor
public Number(int num1, int num2){

    Calculator calc1 = new Calculator(num1);
    Calculator calc2 = new Calculator(num2);

}

Если вы хотите получить к ним доступ извне, объявите переменную экземпляра и создайте экземпляр в своем конструкторе, а затем получите к нему доступ.

   Calculator calc1;
   Calculator calc2;
   public Number(int num1, int num2){
        calc1 = new Calculator(num1);
        calc2 = new Calculator(num2);
    }
   public void displayNumber(){
       System.out.println(calc1.result);
   }
0 голосов
/ 09 мая 2018

Сохранить значение в поле:

class Number{

    final Calculator calc1;

    public Number(int num1, int num2){
        calc1 = new Calculator(num1);
        Calculator calc2 = new Calculator(num2);
    }
    public void displayNumber(){
            System.out.println(calc1.result);
    }
}
0 голосов
/ 09 мая 2018

Вам необходимо объявить переменную на уровне класса не локально:

    class Number{

            Calculator calc1;
Calculator calc2;

    public Number(int num1, int num2){

           calc1 = new Calculator(num1);
           calc2 = new Calculator(num2);

        }
        -----------other code--------------
        }
0 голосов
/ 09 мая 2018

Вы не можете этого сделать.Ваш единственный выбор - объявить их вне конструктора и инициализировать их в нем:

class Number{

    Calculator calc1;
    Calculator calc2;

    public Number(int num1, int num2){

       calc1 = new Calculator(num1);
       calc2 = new Calculator(num2);

    }
    public void displayNumber(){

        System.out.println(calc1.result);
    }
}

Переменные, объявленные в конструкторе, так же как и переменные, объявленные в любом методе, выходят за рамки других методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...