2016-09-26 3 views
-4

В настоящее время я принимаю Java-класс, и сегодня мой учитель сказал что-то, что мой разум не принял, я мог ошибаться. Следующий код,java это ключевое слово внутри конструктора

 class Ab{ 
     int x; 
     int b; 

      public Ab(int x, int b){ 
       this.x = x; 
       this.b = b; 
      } 


      public static void main(String[] args){ 
       Ab x = new Ab(4,5); // this is where my teacher confused me 

      } 
} 

мой учитель сказал x Ab = new AB(4,5); получит й объект вызова конструктора передается в конструкторе, чтобы обратиться к нему с this keyword, насчет анонимных классов, как new Ab(2,4); теперь, что будет this keyword относится к? с моей точки зрения, внутренний конструктор не имеет ссылки на ссылочную переменную, пока конструктор не создаст объект и не вернет ссылку на переменную.

+0

'this' относится к текущему объекту. – Li357

+0

Ваш класс определяет поле 'int x', но в конструкторе вы используете' this.a'. Либо вы имели в виду 'int a' и' this.a', либо 'int x' и' this.x'. Какой из них прав? – walen

+0

Почему ваш код отформатирован так? – markspace

ответ

1

Что насчет анонимных классов, таких как new Ab(2,4);

Это не анонимный класс. Это выражение, которое создает новый объект типа AB. Значение этого выражения является ссылкой на объект. Значение this в конструкторе AB является ссылкой на объект. И значение x ниже - ссылка на объект. Они все ссылки на один и тот же объект.

Ab x = new Ab(4,5); // this is where my teacher confused me 

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

Внутри конструктора this нет необходимости ссылаться на другую ссылочную переменную. Он указывает на тот же объект, что и при возврате конструктора x.

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

+0

, теперь он разъясняет мне, что я так благодарен –

0

Вы должны ввести this, потому что в имени области действия конструктора наших переменных a и b скрыты за именами параметров a и b. this означает только текущий объект класса. :

Редактировать: Объект создан с помощью ключевого слова new. Переменная x - это просто ссылка на объект. В методах класса мы можем ссылаться на текущий объект с this, а в другом месте нам нужно сделать ссылку. Поэтому, когда ваш учитель рассказал об , ссылаясь на x, он имел в виду ссылку на объект, доступный с помощью x.

+0

если вы можете прочитать последний абзац, я объяснил все. –

+0

does 'this keyword' внутри конструктора имеет отношение к ссылочной переменной x, прежде чем конструктор завершит создание объекта и вернет ссылку на переменную x? –

+0

@RidaBatool Я отредактировал свой ответ, чтобы все объяснить вам, принять его как правильный ответ, если он поможет! –