오버로딩이란 객체 생성시 생성자 함수를 같은 이름으로 여러개 정의함으로써

각기 다른 매개변수를 받으면서 같은 이름의 함수를 호출하는 것을 의미함.

 

코드:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
public class Book {
    String title;
    String author;
    void show() {
        System.out.println(title + "/" + author);
    }
 
    public Book() {
        this("","");
        System.out.println("생성자 1호출됨");
    }
    public Book(String title) {
        this(title, "작자미상");
        System.out.println("생성자 2호출됨");
    }
    public Book(String title, String author) {
        this.title = title;
        this.author = author;
        System.out.println("생성자 3호출됨");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Book littlePrince = new Book("어린왕자""생텍쥐페리");
        Book loveStory = new Book("춘향전");
        Book emptyBook = new Book();
        littlePrince.show();
        loveStory.show();
        emptyBook.show();
    }
 
}
 
cs

 

실행결과:

 

설명:

위의 book함수를 보면

public Book()

public Book(String title)

public Book(String title, String author)

이렇게 세 개의 생성자 함수를 갖고 있다.

 

Book littlePrince = new Book("어린왕자""생텍쥐페리");

이 코드는 세번째 생성자 함수를 호출했다.

 

Book loveStory = new Book("춘향전");

두번째 생성자 함수를 호출한 코드인데 실행 결과를 보면 생성자 3이 먼저 호출 된것을 알 수있다.

이유는 

    public Book(String title) {

        this(title, "작자미상");

        System.out.println("생성자 2호출됨");

    }

두번째 생성자 함수를 호출하면 this()함수를 이용하여 자기 자신을 또 호출하게 되는데, 이 때 

 this(title, "작자미상");

String매개변수를 두개 받으므로 이는 세번째 생성자 함수이다. 그래서 생성자3이 호출된 것이다.

 

밑에도 마찬가지.

 

+ Recent posts