서버를 시작했습니다...
이유: 학습, 더이상 미룰 수 없다, 클라가 서버 공부하면 좀 더 좋지 않을까?,생존
이번 시간에는 JAVA의 this와 this()의 차이점에 대해서 알아보도록 하겠습니다.
자바에는 this
와 this()
두가지 키워드가 있는데, 이는 다른 키워드입니다.
this는 인스턴스 자기 자신을 가르키는 참조 변수입니다. (swift에서의 self와 동일) 인스턴스화 되었을 때, 자기 자신의 메모리 주소를 담고 있는 키워드로, 생성자에서 다른 생성자를 호출할 경우와 자신의 주소를 반환할 때 사용하게 됩니다.
class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
이런식으로 자신을 가르킬 때 사용하게 됩니다.
this 키워드를 사용하지 않으면, 매개변수 이름과 대입하는 이름이 똑같기 때문에 구분이 불가능합니다. 물론 다른 이름으로 설정하게 된다면 상관 없지만, 대부분은 동일하게 네이밍을 하기 때문에 this 키워드를 사용해준다.
단, static 메서드에서는 this를 사용하지 못한다.
그렇다면 this()란 무엇일까요? this()는 생성자를 의미합니다. 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용하고, 여러 생성자를 정의할 때 생성자의 중복을 줄이기 위해서 사용하게 됩니다.
this() 메서드는 반드시 생성자 내부에서만 사용해야 하고, 생성자 내부의 첫 줄에 위치해야 합니다.
class Person {
public String name;
public int age;
// 모든 정보 저장
public Person() {
this("챈토피아", 24);
}
// 이름만 저장
public Person(String name) {
this(); // Person() 기본 생성자 호출
this.name = name;
}
}
이렇게 this("챈토피아", 24); 부분에서 Person(String name, int age) 를 호출하게 됩니다. 또한 이름만 저장하게 될 떄는 Person() 기본 생성자를 호출하게 됩니다.