아무 작업도 하지 않는 생성자를 기본 생성자(default constructor)라고 하며, 사용자가 만들지 않아도 클래스에 생성자가 없는 경우 생성된다.
publicclassMessage {privateString sender;//클래스에 생성자가 없으므로 기본 생성자가 자동 작성된다.//public Message(){ }}
publicclassMessage{privateString sender;//명시적으로 생성자를 만들었으므로 기본 생성자가 자동 작성되지 않는다.publicMessage(String sender){this.sender= sender; }}
생성자 오버로딩
생성자를 필요에 의해 여러 개 만드는 것을 생성자 오버로딩(Constructor Overloading)이라고 하며, 다음 조건을 만족할 경우 생성자를 여러 개 만들 수 있다.
매개변수의 개수가 다른 경우
매개변수의 자료형이 다른 경우
매개변수의 순서가 다른 경우
이를 통하여 다양한 객체 생성 방식을 제공할 수 있다.
publicclassBook {privateString name;privateString writer;privateint page;privateint price;//생성옵션1 : 아무런 정보 설정 없이 생성(기본 생성자)publicBook(){}//생성옵션2 : 책 이름만 설정하여 생성publicBook(String name){this.name= name; }//생성옵션3 : 저자만 설정하여 생성// - 생성옵션2와 형태,개수,순서 모두 같기 때문에 작성 불가//public Book(String writer){...}//생성옵션4 : 책 이름과 저자를 설정하여 생성// - 개수가 다르므로 중복 정의 가능publicBook(String name,String writer){this.name= name;this.writer= writer; }//생성옵션 5 : 책 이름과 가격을 설정하여 생성// - 생성옵션 1, 2와 개수가 다르고, 생성옵션 4와 형태가 다르므로 중복 정의 가능publicBook(String name,int price){this.name= name;this.price= price; }//생성옵션 6 : 책 가격과 이름을 설정하여 생성// - 생성옵션 5와 동일하나, 순서가 다르므로 중복 정의 가능// - 실제로 사용할 가능성은 낮음publicBook(int price,String name){this.price= price;this.name= name; }}
생성자간 호출
생성자가 많아지다 보면 중복 코드가 많이 발생하게 되는데, 이 때 생성자 간에 데이터를 전달하여 중복 코드를 없엘 수 있다.