(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)
자바에서 this는 생성된 인스턴스 스스로를 가리키는 예약어이다.
■ this를 통한 멤버 변수 참조
- this 예약어를 통해 멤버 변수임을 명시할 수 있다. this를 사용하지 않더라도 IDE에서 자동으로 구분을 해주지만, this를 사용하여 명시해주면 개발자가 해당 변수를 더 쉽게 파악할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Calculator {
private int num1;
private int num2;
public Calculator(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator(10, 20);
}
}
|
cs |
Line 2 : 멤버 변수 num1 선언
Line 3 : 멤버 변수 num2 선언
Line 5 : num1과 num2를 받아오는 생성자
Line 6 : 멤버 변수 num1을 생성자 선언 시 넘겨준 num1의 값으로 초기화
Line 7 : 멤버 변수 num2를 생성자 선언 시 넘겨준 num2의 값으로 초기화
■ this를 통한 다른 생성자 호출
- this를 통해 생성자에서 다른 생성자를 호출할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
class Calculator {
private int num1;
private int num2;
private char ch;
public Calculator(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
System.out.println("Calculator(int num1, int num2)");
}
public Calculator(int num1, int num2, char ch) {
this(num1, num2);
this.ch = ch;
System.out.println("Calculator(int num1, int num2, char ch)");
}
}
public class Main {
public static void main(String[] args) {
System.out.println("------------ calc1 ------------");
Calculator calc1 = new Calculator(10, 20); // Calculator(int num1, int num2)
System.out.println("------------ calc2 ------------");
Calculator calc2 = new Calculator(10, 20, '+'); // Calculator(int num1, int num2)
// Calculator(int num1, int num2, char ch)
}
}
|
cs |
Line 6 : num1과 num2를 받아오는 생성자
Line 12 : num1, num2, ch를 받아오는 생성자
Line 13 : Line 6의 생성자를 호출하여 num1과 num2를 초기화
Line 14 : 멤버 변수 ch 초기화
Line 22 : num1, num2를 매개변수로 전달하는 Line 6의 생성자 호출
Line 25 : num1, num2, ch를 매개변수로 전달하는 Line 12의 생성자 호출
■ this를 통한 자신의 주소 반환
- this를 통해 자기 자신의 주소 값을 반환할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Calculator {
private int num1;
private int num2;
public Calculator(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
public Calculator printAddress() {
return this;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc1 = new Calculator(10, 20);
System.out.println(calc1.printAddress()); // Calculator@15db9742
}
}
|
cs |
Line 10 : 자기 자신의 주소 값을 반환하는 메소드 (반환형을 클래스형으로 만들어야 함)
Line 18 : 생성한 calc1 인스턴스의 주소 값 출력
'Java' 카테고리의 다른 글
자바(Java) 배열(Array) (0) | 2020.07.04 |
---|---|
자바(Java) static 변수(클래스 변수), static 메소드(클래스 메소드) (0) | 2020.07.03 |
자바(Java) 접근 제어자 (0) | 2020.06.30 |
자바(Java) 생성자(Constructor) (0) | 2020.06.30 |
자바(Java) 클래스(Class)와 인스턴스(Instance) (0) | 2020.06.30 |