백엔드개발자/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()는 '생성자'이다.