ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] this 키워드
    JAVA 2021. 9. 29. 11:35

    Java Script는 context에 따라서 다양한 값을 가지고 어떻게 사용하는지에 따라 그 역할이 구분된다. 필자가 Java Script를 먼저 공부 했던 터라 JAVA의 this도 깊게 알고 싶어 졌다. JAVA의 this는 Java Script 보다는 비교적 간단한 룰에 의해 사용 된다.

    JAVA에서 this란?

        - this는 인스턴스 (객체) 자신을 의미

        - 자기 자신의 메모리를 가리킴

        - 생성자에서 다른 생성자 호출 할 때 사용

        - 인스턴스 자신의 주소를 반환

     

    JAVA에서 this가 사용 되는 3가지 경우

    1. 클래스 안의 생성자 (Constructor) 또는 메서드의 매개변수 이름과 클래스의 멤버변수와 이름이 동일 할 때

    public class Universe {
        private String galaxy;
        private String star;
        
        public Universe(String galaxy, String star) {
            // galaxy = galaxy;
            // star = star;  *생성자 매개변수와 클래스의 멤버변수 이름이 동일한 경우 this가 없으면 에러가 난다.
            this.galaxy = galaxy;
            this.star = star; // 이 경우 이렇게 this를 붙여 줘야 한다.
        }
        
        public Universe(String str1, String str2) {
           galaxy = str1;
           star = str2;  // 매개변수와 멤버변수 이름이 다를 경우에는 this가 없어도 괜찮다.
        }
    }

    2. 클래스에 정의된 다른 생성자 호출

    public class Universe {
        private String galaxy;
        private String star;
        
        // 다른 생성자를 가리키는 this가 포함된 생성자는 최 상단에 작성 되야함
        public Universe() {
            this("Adromeda", "Proxima A") // Universe(String galaxy, String start)를 호출
        }
        
        public Universe(String galaxy, String star) {
           this.galaxy = galaxy;
           this.star = star; 
        }
    }

    - 클래스에 여러개의 생성자가 오버로딩 되어 있을 때 깔끔한 위와 같이 this를 이용하면 깔끔한 소스 코드를 작성 할 수 있다.

    - this로 다른 생성자를 호출할 때 메서드를 호출 하는 것 처럼 this(매개변수)의 형태로 이용하면 된다.

     

    3. 클래스에서 만들어진 인스턴스 자신의 참조값을 전달 하고 싶을 때

    public class Universe {
        private String galaxy;
        private String star;
        
        public Universe(String galaxy, String star) {
           this.galaxy = galaxy;
           this.star = star; 
        }
        
        public Universe getUniverseInstance() {
            return this;  // 인스턴스 자신을 리턴해 준다. 
        }
    }

    - 빌더패턴에서 . 으로 체인을 맺어 값을 추가 하고 싶을 때 인스턴스 자신을 return 해주는 this를 사용한다.

     

Designed by Tistory.