생성자 메소드 (Constructor)

Kyu·2021년 1월 12일
0

Java 공부기록

목록 보기
8/40

생성자 메서드

특징

  • 객체를 생성할 때 사용되는 메소드
  • 객체 생성 후 객체의 초기화를 하는 역할 수행 - 객체를 생성함과 동시에 기억공간이 만들어졌으니 데이터를 저장할수있다. 저장하는 행위를 초기화(initialize)라고 한다.
  • 클래스이름과 동일한 메소드
  • 메소드의 return type이 없다(void 아님)
  • public 접근 권한을 가진다(private 생성자도 있음)
  • 생성자가 없을 때는 기본 생성자가 만들어진다.
  • 객체를 생성할때 생성자 메소드를 통해서 객체가 만들어지기때문에 직접 기술하지않더라도 자동으로 삽입이되고 이것을 기본 생성자라고 한다.
  • 특별히 객체를 생성할때 사용되는 메소드를 생성자라고 한다
public class BookVO {
	private String title;
	private int price;
	private String company;
	private int page;
}

BookVO b = new BookVO();

초기화하기 위해서 코드를 작성하지 않았다.
앞에서 배운것같이 b.title = "자바"; 이런식으로 초기화하는 방법도 있지만,
지금은 생성자를 통해서 하는 법을 배우고자 한다

public class BookVO {
	private String title;
	private int price;
	private String company;
	private int page;
	
	//초기화
	public BookVO(String title, int price, String company, int page){
		this.title = title;
		this.price = price;
		this.company = company;
		this.page = page
	}
}

BookVO b = new BookVO("자바", 17000, "Kyu", 530); // 초기값

생성자도 메소드이기 때문에 매개변수에 값을 전달할 수 있다.
받은 값을 this를 이용해서 초기화할 수 있다
this는 앞에서 언급했듯이 자기자신 BookVO를 가리키는 것이기때문에,
그리고 this도 객체이기 때문에 .을 이용해 초기화할수있는것이다.
만약에 위 코드에서 this가 없으면, 예를 들어 title = title이라면 두개의 title 모두 매개변수로 들어온값을 나타내기 때문에 초기화를 할 수없다
생성자의 가장 큰역할을 초기화이다.

	//초기화
	public BookVO(String title, int price, String company, int page){
		this.title = title;
		this.price = price;
		this.company = company;
		this.page = page
	}
	
BookVO b = new BookVO("자바", 17000, "Kyu", 530); // 초기값

이렇게 코드를 만들면 초기화를 한다고 했다.
초기화를 하기전에는 분명히 메모리에 객체가 만들어져야하는데,
눈에 보이지 않지만 생성자 메소드 안에는 객체를 메모리에 올리는 코드가 포함되어 있다.

그래서 기본생성자만가지고는 초기화를 할 수 없고 별도로 매개변수를 넣고 this를 이용해 초기화를 해야한다.

생성자 중복정의(Overloading)

BookVO b = new bookVO();
BookVO b = new BookVO("자바", 17000, "Kyu", 530);

다른 언어에서는 메소드 이름이 같으면 에러가나는데 객체지향에서는 이런식으로 해도 중복에러가 나지않는다.
매개변수의 갯수가 다르기때문에 다른 함수로 해석을 한다.
그래서 원하는 대로 생성자 메소드를 여러개 만들 수 있다.

profile
TIL 남기는 공간입니다

0개의 댓글