FIF's 코딩팩토리

패스트캠퍼스 챌린지 22일차 본문

패스트캠퍼스 챌린지

패스트캠퍼스 챌린지 22일차

FIF 2022. 2. 14. 10:54
반응형

객체 자신을 가리키는 this

 

생성자나 메서드에서 this. 이런식으로 사용했다. 그렇다면 thsi란 무엇인가?

this는 c++등등 다른 프로그래밍 언어에서도 나오는 키워드이다.

이 키워드는 상속과 관련있는 super키워드와 연관이 있다.

 

new로 생성된 인스턴스는 heap 메모리에 생긴다고 했다.

클래스 내에서 참조변수가 가지는 주소 값과 동일한 주소 값을 가지는 키워드이다.

this 키워드는 다음과 같은 경우에 사용된다.

 

1. 자신의 주소 참조값 자체를 반환할 때도 this를 사용한다.

아래 코드를 보자. main 메서드에는 args와 day라는 변수가 있다.

이 때 day는 인스턴스로 heap 메모리에 생긴다.

그리고 setYear() 메서드를 호출하면서 그 메서드를 보면 this키워드를 볼 수 있다. 이 this키워드도 바로 heap메모리에 생긴다.

public static void main(String[] args){
   BirthDay day = new BirthDay();
   day.setYear(2000);
}
public void setYear (int year) {
   this.year = year;
}

 

아래 코드를 2개의 생성자에서 this 키워드를 사용하여 값을 넣음을 볼 수 있다.

그리고 main메서드에서 콘솔에 출력해보면 p와 p2의 주소값이 같음을 볼 수 있다.

public class Person {

	String name;
	int age;
	
	public Person() {
		this("이름없음", 1);
	}
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public Person getPerson() {
		return this;
	}
	
	
	public static void main(String[] args)
	{
		Person p = new Person();
		p.name = "James";
		p.age = 37;
		
		Person p2 = p.getPerson();
		System.out.println(p);
		System.out.println(p2);
	}
}

 

 

2. 하나의 생성자에서 다른 생성자를 호출할 때 사용한다.

클래스에 생성자가 여러개인 경우, this 를 이용하여 생성자에서 다른 생성자를 호출할 수 있다.

생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() satemnet이전에 다른 statement를 쓸 수 없다.

public class Person {

	String name;
	int age;
	
	public Person() {
		this("이름없음", 1);
	}
	
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
}

 

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr



반응형
Comments