백엔드개발자/JAVA: JAVA TPC 강의
생성자 메서드, this와 this()
보혀니
2021. 10. 7. 22:49
public class TPC12 {
public static void main(String[] args) {
// 호출하면 생성자메서드가 객체름 만듦
BookVO b = new BookVO();
// b에 번지가 들어가고 객체를 가르킨다
// 생성과 동시에 초기화 됨, 생성자 메서드에 초기화 작업을 넣었기 때문에
BookVO b2 = new BookVO("파이썬",12000,"hyeon",123);
}
}
public class BookVO {
public String title;
public int price;
public String company;
public int page;
public BookVO() {
// 초기화 작업
this.title = "자바";
this.price = 14000;
this.company = "bohyeon";
this.page = 555;
}
// 생성자 메서드 중복정의 (overloading)
public BookVO(String title, int price, String company, int page) {
this.title = title;
this.price = price;
this.company = company;
this.page = page;
}
// 메서드 이름이 같다. 하는 일이 비슷하다?
// 클래스에 생성자가 하나도 없을 때 디폴트생성자가 자동으로 생길 뿐.
// 만약 생성자 메서드를 정의하면 디폴트 생성자는 생성되지 않음
}
생정자 내에서 다른 생성자를 호출할 때는 클래시이름 대신 this를 사용해야하고,
생성자 호출이 메서드 첫번째 줄에서 이루어져야한다.
생성자에서 다른 생성자를 첫 줄에서만 호출이 가능하도록 한 이유는 생성자 내에서 초기화 작업도중에 다른 생성자를 호출하게 되면, 호출된 다른 생성자 내에서도 멤버볃수들의 값을 초기화를 할 것이므로 다른 생성자를 호출하기 이전의 초기화 작업이 무의미해질 수 있기 때문이다.
this => 인스턴스 자신을 가르키는 참조변수, 인스턴스의 주소가 저장되어 있다.
this(), this(매개변수) => 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용한다.
this와 this() 는 완전히 다른 것이다.
this는 '참조변수'이고, this()는 '생성자'이다.