ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바기초] 클래스와 객체 | this가 하는 일
    º Language º/Java 2023. 3. 1. 17:46

    #  this가 하는 일이 뭐야?

     

    1. 인스턴스 내에 자기 자신의 메모리를 가리키는 기능을 해

    2. 생성자에서 다른 생성자를 호출해

    3. 자신의 주소를 반환해

     

     

    * 자세히 알아볼까?

     

    1. 인스턴스 내 자신의 메모리를 가리키는 this

    - 클래스에 생성된 인스턴스(instance) 스스로를 가리키는 예약어

     

    * 인스턴스란?

    - 인스턴스(instance)는 하나의 클래스에서 생성된 객체

    - 즉 클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현된 것을 의미

    - 이때 추상적인 개념인 클래스에서 실제 객체를 생성하는 것을 인스턴스화(instantiation)라고 한다.

     

    인스턴스 예시

    public Person(String name, int age) {
      this.name = name;
      this.age = age;
    }

    > 위와 같은 경우 this. 를 생략하게 되면 name 이나 age 가 파라미터(매개변수)로 사용되는 name과 age로 인식된다.

     

    파라미터(매개변수)란?

    - 파라미터(매개변수)란 메소드 수행에 필요한 입력값을 저장하는 변수

    - 예를 들어, 전화를 거는 메소드를 만들 때 우리는 전화를 걸 대상에 대한 입력값이 필요한데 이러한 입력값을 기억해두는 변수가 바로 파라미터(매개변수) 

    - 이러한 파라미터(매개변수)는 메소드의 구조상에서 소괄호 사이에 위치한다.

     

    파라미터 예시

     

     

    2. 생성자에서 다른 생성자를 호출하는 this

    - 생성자가 또 다른 생성자를 호출하고 싶을 때 this를 사용할 수 있음

     

    * 생성자가 하는 일은? 

    객체가 생성될 때 초기화 작업을 함 (대체로 멤버변수를 값에 세팅) /  생성자는 1개 이상일 수 있음 = 오버로드(overload)

     

    코드 예시

    public Person() {
           name = "test"
           this ("이름없음",1);
    }

    public Person(String name, int age) {
           this.name = name;
           this.age = age;
    }

    > this.를 이용하여 다른 생성자를 호출할 때는 이전에 어떠한 statement(명령어)도 사용할 수 없다. (name = "test")

       그러므로 this. 가 가장 먼저 쓰여져야 한다. ( 호출할 생성자 인스턴스가 먼저 생성 되지 않아 this.이전 명령은 불가)

       * 위와 같이 생성자가 여러 개이고 파라미터만 다른 경우 constructor overloading(생성자 오버로딩) 이라고 한다.

     

     

    3. 자신의 주소를 반환하는 this

    - 자신의 주소(참조값)를 반환하는 기능을 가짐

     

    코드 예시

    class Person {
           public Person returnSelf() {
           return this;
        }
    }
    public static void main(String[] args) {
           System.out.println(p1.returnSelf()); 
    }

    > Person 메서드에서 반환값을 this. 로 출력한 값을 선언했을 때 출력되는 값은 인스턴스 주소 값이다.

     

     

    완성

    출력값

     

    * 코드에서는 모두 this. 라고 쓰여있지만, 서로 다른 인스턴스(instence) 마다 값이 달라질 수 있다는 것을 유의하자.

Coder yein