-
레퍼런스 this (참조형 변수 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
|
class Student{
// 인스턴스(멤버) 변수
int id;
String name;
public Student(int id, String name) {
// 로컬변수와 인스턴스변수의 이름이 같을 때,
// 로컬변수가 선언된 메서드 내에서 변수명 지정 시 로컬변수로 인식 됨
// id = id; // 잘못된 코드(오류는 아님) => 로컬변수 값을 다시 로컬변수에 전달하는 코드
// name = name; // 잘못된 코드(오류는 아님) => 로컬변수 값을 다시 로컬변수에 전달하는 코드
// 인스턴스 변수를 로컬 변수와 구별하기 위해 레퍼런스 this 를 사용해야함
// => 인스턴수변수명 앞에 this. 을 붙여서 구분
this.id = id; // 로컬변수 id값을 인스턴수 변수 id에 저장
this.name = name; // 로컬변수 name값을 인스턴수 변수 name에 저장
}
public void showStudentInfo() {
System.out.println("아이디 : " + this.id); // 레퍼런스 this를 사용해도 되고
System.out.println("이름 : " + name); // 생략해도됨(중복되는 이름이 없기 때문)
}
}
|
cs |
-
생성자 this()
생성자 내에서 오버로딩 된 다른 생성자를 호출
생성자 오버로딩 시 중복 코드를 제거하기 위해 사용
생성자 이름대신 this 를 사용하여 생성자 호출 형태를 갖춤
필요한 파라미터를 전달하면 됨
주의! 생성자 this() 는 생성자 내에서 첫번째로 실행되어야 하며, 단 한 번만 사용가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class MyDate(){
int year;
int month;
int day;
public MyDate(){ //생성자 오버로딩
this(1900, 1, 1);
}
public MyDate(int year){
this(year, 2, 2);
}
public MyDate(int year,int month){
this(year, month, 3);
}
public MyDate(int year,int month,int day){
this.year =year;
this.month =month;
this.day =day;
}
public void printDate() {
System.out.println(year+"/"+month+"/"+day);
}
|
cs |
'Language > Java' 카테고리의 다른 글
Singleton Design Pattern(싱글톤 디자인 패턴) (0) | 2020.06.01 |
---|---|
static 키워드 (0) | 2020.06.01 |
파라미터 생성자 (0) | 2020.05.28 |
생성자(Constructor) (0) | 2020.05.28 |
Pass by value & Pass by reference (0) | 2020.05.28 |