Spec-Zone .ru
спецификации, руководства, описания, API
|
В пределах метода экземпляра или конструктора, this
ссылка на текущий объект — объект, метод которого или конструктора вызывают. Можно обратиться к любому элементу текущего объекта изнутри метода экземпляра или конструктора при использовании this
.
this
с ПолемНаиболее распространенная причина использования this
ключевое слово - то, потому что поле затенено параметром конструктора или методом.
Например, Point
class был записан как это
public class Point { public int x = 0; public int y = 0; //constructor public Point(int a, int b) { x = a; y = b; } }
но это, возможно, было записано как это:
public class Point { public int x = 0; public int y = 0; //constructor public Point(int x, int y) { this.x = x; this.y = y; } }
Каждый параметр теням конструктора одно из полей объекта — в конструкторе x
локальная копия первого параметра конструктора. Обратиться к Point
поле x
, конструктор должен использовать this.x
.
this
с КонструкторомИзнутри конструктора можно также использовать this
ключевое слово, чтобы вызвать другого конструктора в том же самом class. Выполнение так вызывают явным вызовом конструктора. Вот другой Rectangle
class, с различной реализацией от того в разделе Объектов.
public class Rectangle { private int x, y; private int width, height; public Rectangle() { this(0, 0, 0, 0); } public Rectangle(int width, int height) { this(0, 0, width, height); } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } ... }
Этот class содержит ряд конструкторов. Каждый конструктор инициализирует некоторых или все задействованные переменные прямоугольника. Конструкторы обеспечивают значение по умолчанию для любой задействованной переменной, начальное значение которой не обеспечивается параметром. Например, конструктор без параметров вызывает конструктора с четырьмя параметрами с четыре, 0 значений и конструктор с двумя параметрами вызывают конструктора с четырьмя параметрами с два 0 значений. Как прежде, компилятор определяет который конструктор вызвать, основанный на числе и типе параметров.
Если существующий, вызов другого конструктора должен быть первой строкой в конструкторе.