생성자 필요한 이유 :객체를 생성하는 시점에 어떤 작업을 하고싶을때
생성자는 메서드와 비슷하지만 다음과 같은 차이가 있다.
public class MemberConstruct {
String name;
int age;
int grade;
MemberConstruct(String name, int age, int grade) {
System.out.println("생성자 호출 name=" + name + ",age=" + age + ",grade=" +
grade);
this.name = name;
this.age = age;
this.grade = grade;
}}
MemberConstruct(String name, int age, int grade) {
System.out.println("생성자 호출 name=" + name + ",age=" + age + ",grade=" +
grade);
this.name = name;
this.age = age;
this.grade = grade;
}
new 생성자이름(생성자에 맞는 인수 목록)
new 클래스이름(생성자에 맞는 인수 목록)
문제 - Book과 생성자
BookMain 코드가 작동하도록 Book 클래스를 완성하세요.
특히 Book 클래스의 생성자 코드에 중복이 없도록 주의하세요.
package construct.ex;
public class Book {
String title; //제목
String author; //저자
int page; //페이지 수
//TODO 코드를 완성하세요.
}
package construct.ex;
public class BookMain {
public static void main(String[] args) {
// 기본 생성자 사용
Book book1 = new Book();
book1.displayInfo();
// title과 author만을 매개변수로 받는 생성자
Book book2 = new Book("Hello Java", "Seo");
book2.displayInfo();
// 모든 필드를 매개변수로 받는 생성자
Book book3 = new Book("JPA 프로그래밍", "kim", 700);
book3.displayInfo();
}
}
실행 결과
제목: , 저자: , 페이지: 0
제목: Hello Java, 저자: Seo, 페이지: 0
제목: JPA 프로그래밍, 저자: kim, 페이지: 700 ```
정답
package construct.ex;
public class Book {
String title;
String author;
int page;
// 기본생성자
Book() {
this("", "", 0);
}
// title과 author만을 매개변수로 받는 생성자
Book(String title, String author) {
this(title, author, 0);
}
// 모든 필드를 매개변수로 받는 생성자
Book(String title, String author, int page) {
this.title = title;
this.author = author;
this.page = page;
}
void displayInfo() {
System.out.println("제목: " + title + ", 저자: " + author + ", 페이지: " +
page);
}
}