[Java 객체지향] this 키워드

2022. 1. 26. 21:57·Java & Kotlin
목차
  1. this 키워드 역할
  2. 생성된 인스턴스의 메모리 주소값을 가진다.
  3. 예시
  4. 생성자 내에서 또다른 생성자를 호출한다.
  5. 예제 코드

this 키워드 역할

  • 인스턴스 자신의 메모리를 가리킨다.
  • 생성자 내에서 또 다른 생성자를 호출한다.

 

생성된 인스턴스의 메모리 주소값을 가진다.

  • 참조 변수는 외부에서 인스턴스의 주소 값 (참조 값)을 가리킨다.
  • this 키워드는 인스턴스 내부에서 자신의 메모리 주소 값을 가리킨다.

말은 어렵지만 결국 하나의 클래스에서 생성된 참조 변수와 인스턴스의 this 키워드는 같은 값을 가진다는 것이다.

 

예시

저번에 만든 CheckDate 클래스를 이용해서 참조변수, this, 인스턴스의 관계를 알아보자.

 

CheckDate의 인스턴스를 생성하고 setDay 메서드를 이용해서 date의 멤버변수를 설정하는 코드이다.

setDay() 메서드에서 this 키워드가 사용되는데, 이는 참조변수인 date와 같이 생성된 인스턴스의 주소값을 가리킨다.

 

생성자 내에서 또다른 생성자를 호출한다.

  • 클래스에 생성자가 여러개 있는 경우, 한 생성자 내부에서 다른 생성자를 호출할 수 있다.
  • 생성자 내부에서 다른 생성자 호출이 일어나는 경우, 인스턴스 생성이 완전하지 않기 때문에 생성자 호출이 가장 첫 statement로 와야한다.

 


예제 코드

Person.java
  • this 키워드로 생성자를 호출할 때 매개 변수가 일치하는 생성자를 찾아 호출한다.
  • 만들고자 하는 생성자의 코드가 이미 다른 생성자 안에 존재할 경우에 자주 쓰인다.
  • this를 리턴하면 자신의 주소를 반환한다.
  • 메인 함수도 클래스 안에서 돌릴 수 있다.
package ch12;

public class Person {
	
	String name;
	int age;
	
	public Person() {
		
		// 이 자리에는 statement 올 수 없음
		this("no name", 1);	// Person 생성자에 매개변수 없을 경우 멤버 변수 초기화
	}
	
	public Person(String name, int age) {
		
		this.name = name;
		this.age = age;
	}
	
	public void showPerson() {
		System.out.println(name + "," + age);
	}
	
	public Person getPerson() {
		return this;	// this 리턴
	}
	
	public static void main(String[] args) {
		
		Person person = new Person();
		person.showPerson();
		
		System.out.println(person);		// 참조 변수가 가리키는 값 출력
		
		Person person2 = person.getPerson();
		System.out.println(person2);	// this 키워드가 가리키는 값 출력
		
		
	}

}

 

수행 결과
  • 첫번째 줄 : 매개 변수가 없을 때 Person 클래스의 인스턴스는 초기화 값으로 name = "no name", age = 1을 가진다는 것을 확인할 수 있다.
  • 두~세번째 줄 : 참조변수가 가리키는 값과 this의 반환값이 같은 것을 볼 수 있다.
no name,1
ch12.Person@372f7a8d
ch12.Person@372f7a8d
저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 객체지향] 객체 간 상호작용 구현해보기  (0) 2022.01.26
[Java 객체지향] 캡슐화  (0) 2022.01.25
[Java 객체지향] 접근 제어 지시자  (0) 2022.01.25
  1. this 키워드 역할
  2. 생성된 인스턴스의 메모리 주소값을 가진다.
  3. 예시
  4. 생성자 내에서 또다른 생성자를 호출한다.
  5. 예제 코드
'Java & Kotlin' 카테고리의 다른 글
  • [Java 객체지향] Static 변수
  • [Java 객체지향] 객체 간 상호작용 구현해보기
  • [Java 객체지향] 캡슐화
  • [Java 객체지향] 접근 제어 지시자
Sue
Sue
개발 공부 로그
Sue's devlog개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 객체지향] this 키워드

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.