본문 바로가기
Language/Java

this

by 태윤2 2020. 5. 28.

 

 

  • 레퍼런스 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(190011);
    }
    public MyDate(int year){
        this(year, 22);
    }
    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