안녕하세요.


슬라임 퇴치 게임 3탄에서는 슬라임의 종류를 다양화할건데요, 그러기 위해서는 상속에 대해 알아야되고 상속을 이해하려면 생성자에 대해 조금더 깊이 알아야됩니다.


이번 강좌에서는 '생성자 오버로딩'이란 개념에 대해 배워보겠습니다. 용어가 좀 생소한데요, 알고보면 별거 아닙니다. 아래 예제를 보시죠.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Horse.java
 
package study;
 
public class Horse {
 
    Horse(int i) {
 
        System.out.println(i + "킬로그램의 말이 탄생했습니다");
 
    }
 
    Horse(int i, String str) {
 
        System.out.println(i + "킬로그램의 " + str + "라는 이름의 말이 탄생했습니다");
 
    }
 
}
 
cs


Horse(말)라는 클래스를 만들고 생성자를 2개 만들었습니다. (생성자 앞에 public이 빠졌는데 에러가 나지 않으므로 넘어갑시다. 훗날 public을 반드시 붙여야 하는 경우가 발생하면 그때 public에 대해 설명드리겠습니다)


생성자는 무조건 하나만 만들어야 되는줄 아셨겠지만 이렇게 여러개 만들 수 있습니다^^


이렇게 만들어두면 어떤 상황이 발생하는지 Study02로 가서 객체를 생성해봅시다.




어떤가요? ㅎㅎ


생성자의 인수로 정수값 하나만 넣어주면 첫번째 생성자가 호출되고, 정수값과 문자값을 같이 넣어주면 두번째 생성자가 호출됨을 알 수 있습니다.


다시말해서, 생성자의 인수에 따라서 그에 맞는 생성자가 호출이되는 것이죠.


이것을 '생성자 오버로딩'이라고 합니다. 오버로딩(overloading)은 '과적'이라는 뜻인데 동일한 이름의 함수를 인수 구성만 달리해서 여러개 만들어서 사용하는 기법입니다. 똑같은 함수가 여러개 있으니 '과해'보이긴 하네요 ㅎㅎ 그렇다고 해서 사용을 자제해야된다는 건 아니기 때문에 안심하세요^^



자, 이번엔 더 신기한걸 보여드릴게요.




신기방기^^


horse 클래스의 9행이 엄청엄청 중요합니다.



생성자 속에서 같은 클래스의 다른 생성자를 호출하고 싶을때는 this()를 사용합니다.



자, 실행순서를 차근차근 따라가봅시다.


우리가 실행명령을 내리면 컴퓨터는 우선 스터디02 클래스의 9행을 처리하겠죠.


생성자에 정수값만 적혀있으니 horse클래스의 첫번째 생성자를 호출합니다.


그런데 첫번째 생성자의 내용을 보니 메인함수에서 받아온 정수값과 "마순이"라는 문자값을 이용해서 두번째 생성자를 호출하는군요?


따라서 최종적으로 horse클래스의 15행이 실행이 되는 것입니다.



자, 이해가 되셨으면 다음 강의로 넘어가시면 됩니다.


다음 시간에는 '상속'에 대해 배워보겠습니다.


감사합니다.

+ Recent posts