📕 멘토씨리즈 자바

[멘토씨리즈 자바] Section09 생성자 - 응용문제

harveydent 2023. 5. 17. 19:18
728x90

Section09 생성자

1. 다음 빈칸에 알맞은 단어를 작성해 보세요.

  • 클래스의 이름과 동일하고 반환 타입이 없는 특별하 메서드를        (이)라고 합니다.
더보기
  • 클래스의 이름과 동일하고 반환 타입이 없는 특별하 메서드를 생성자 (이)라고 합니다.

2. 다음 문장이 맞으면 O표, 틀리면 X표 하세요.

  • 생성자를 호출 할 때는 반드시 new 키워드를 사용해야 합니다.
  • 매개변수가 1개인 생성자를 기본 생성자라고 부릅니다.
  • 생성자를 코드로 명시하지 않으면 기본 생성자는 생략되어 있습니다.
더보기
  • 생성자를 호출 할 때는 반드시 new 키워드를 사용해야 합니다. ( O )
  • 매개변수가 1개인 생성자를 기본 생성자라고 부릅니다. ( X )
  • 생성자를 코드로 명시하지 않으면 기본 생성자는 생략되어 있습니다. ( O )

3. 다음 코드를 실행했을 때 콘솔창에 출력되는 결과는 무엇입니까?

package section09;

public class PRACTICE_09_03 {
	public static void main(String[] args) {
    	Computer computer1 = new Computer("삼송");
        computer1.logo();
    }
}

class Computer {
	String brand;
    
    Computer(String name) {
    	brand = name;
    }
    void logo() {
    	System.out.println("사랑해요 " + brand);
    }
}
더보기
사랑해요 삼송

4. 위 3번 코드에서 Computer 클래스의 brand 필드명을 name으로 변경하면, 다음 빈칸에 들어갈 코드는 무엇입니까?

class Computer {
	String name;
    
    Computer(String name) {
    	`???`
    }
더보기
class Computer {
	String name;
    
    Computer(String name) {
    	this.name = name;
    }

5. 다음 코드는 컴파일 에러가 발생합니다. 그 이유는 무엇이며, 어떻게 해결해야 할까요?

package section09;

public class PRACTICE_09_05 {
	public static void main(String[] args) {
    	Book b1 = new Book("어린왕자", 300);
        Book b2 = new Book();
    }
}

class Book {
	String title;
    int pages;
    
    Book(String title, int pages) {
    	this.title = title;
        this.pages = pages;
    }
}
더보기
  • 생성자에 전달할 매개변수가 부족하면, 객체를 생성할 수 없습니다. 선언된 생성자의 형태에 맞게 매개변수를 전달해 줘야 합니다.
package section09;

public class PRACTICE_09_05 {
	public static void main(String[] args) {
    	Book b1 = new Book("어린왕자", 300);
        Book b2 = new Book("해리포터", 500); // 생성자 형태에 맞게 매개변수를 전달해 주거나,
    }
}

class Book {
	String title;
    int pages;
    
    Book(String title, int pages) {
    	this.title = title;
        this.pages = pages;
    }
}
package section09;

public class PRACTICE_09_05 {
	public static void main(String[] args) {
    	Book b1 = new Book("어린왕자", 300);
        Book b2 = new Book();
    }
}

class Book {
	String title;
    int pages;
    
    Book() { // 매개변수를 받지 않는 생성자 오버로딩
    	this.title = "책 제목";
        this.pages = 400;
    }
    
    Book(String title, int pages) {
    	this.title = title;
        this.pages = pages;
    }
}
728x90