본문 바로가기
IT/Java

This()

by Jeami 2013. 6. 23.
반응형



Java에서 좀 난해한 게 바로 this.

this()를 사용한다는 건 개념을 알고 있다해도 이게 코딩때 어떻게 쓰이는지는 또 그 다른 문제라고 생각됩니다. 참 어려운 개념인 것 같네요. 프로그래밍을 처음 접하는 사람들에겐..

바로 예제를 보면서 살펴보도록 할게요



자바


this 라 함은 자기자신을 참조하는 것이고,

기본적으로 무조건 생성되게 됩니다. 클래스 내에 this라는 변수가 없는데도 7번 줄의 생성자에서 바로 사용 가능하다는 것을 볼 수 있네요.

실행하면 어떻게 되나 한번 보실까요?( 이거 좀 희안한 순서로 실행이 되거든요


Java의 실행 메소드는 main()이라는 것을 다시한번 인지하도록 하겠습니다.

25번 라인에서 인스턴스를 생성했는데요. 중요한 개념이 등장합니다. 인스턴스를 생성했다는 것은 기본 생성자가 바로 실행이 된다는 것입니다.

26,27번 라인은 보통 인스턴스 생성 후 이런 식으로 코딩을 하는것이 가장 기본적인 것임을 한번 짚고가고자 끄적여 본 것입니다. this()를 설명하는데에는 아무런 관계도 없으니 그냥 넘기셔도 무관합니다.

앞서 말씀드린 것처럼 인스턴스 생성 후 기본 생성자가 바로 실행이 되면 가장 먼저, 7번 라인이 실행 되겠죠?

의아한 것은 Korea()가 실행이 되었는데, 출력결과를 보시면 Korea()가 제일 나중에 실행되었음을 확인 할 수 있습니다.

this("이름없음"); 를 통해 Korea() 생성자 안에서 다른 생성자를 호출해버린 것입니다.

this는 Korea 클래스를 의미하는데요.(자기자신)

따라서 this("이름없음"); 은 12번 라인의 String name을 매개변수로 갖는 Korea(String name)을 실행하라는 의미가 되어버립니다.

그 다음은 어디가 실행이 될까요?

마찬가지로 Korea(String name) 메소드내에서 this(name,-1); 을 통해 새로운 생성자를 또 호출해버립니다. 17번 라인을 보시면 String형, int형을 갖는 Korea()메소드가 보이네요. 결과적으로 완전 거꾸로 실행이 되어 버립니다^^;

this("이름없음"); 을 통해 String형 변수값을 가지고 있으면서 this(name,-1); 을 통해 String 변수값과 int 변수값도 갖게 되고, 이 값들을 가지고 최종적으로 Korea(String name, int age) 메소드로 가버립니다. 따라서 "이름없음" -1 이 고스란히 name, age에 들어가버리게 되는거죠. 

20번 라인에서 출력이 시작되네요.(거꾸로 거꾸로)

대략적인 개념이 잡히실까요? TT

이렇듯 this()는 생성자 안에서 다른 생성자를 호출하는 기능을 갖습니다. 그리고 여기서 중요한 특징은 이렇게 생성자를 호출할 경우에 클래스안에서 무조건 가장 먼저 실행이 되어야만 한다는 것입니다. 

생성자 안에서 다른 생성자를 호출한다! 이것이 주요 개념입니다!!



반응형

'IT > Java' 카테고리의 다른 글

Java 다차원 배열  (0) 2013.06.24
Java 배열 매개변수  (0) 2013.06.23
Static 메모리만의 특징  (0) 2013.06.23
Static 메모리 작동 예제  (0) 2013.06.23
Java 배열 개념, 특징, 기초  (0) 2013.06.23

loading