*생성자 오버로딩(1)
개념
: 클래스를 생성하고 main메서드에서 객체(인스턴스)를 생성하는 과정에서 자동으로 생성자가 생긴다. 이 생성자는 평소에는 숨어서 기본값으로 작동하나, 클래스 안에서 생성자를 명시적으로 지정해줄 수 있다. 뿐만 아니라, 생성자도 오버로딩을 통해 메서드와 비슷한 기능을 하게 만들 수 있다. 그림을 보면서 자세히 알아보자.
위 그림과 같이 MyDate()가 기본생성자이다. 본래 공백으로 해도 되지만, 여기서는 (년도,월,일)의 초기값을 지정해주었다.
두번째 메서드부터 생성자 오버로딩을 사용했다.
this.year(멤버변수) = year(변수); // 오른쪽 변수값, 즉 매개변수의 지정에 따라, 그 값은 멤버변수값에 대입되어 출력될 것이다.
print()메서드에서 리턴값을 돌려주지 않고 출력만 되게했다. 생성자 오버로딩을 통해 초기값을 자유롭게 변경할 수 있게 했기 때문에, 굳이 리턴값을 돌려줄 필요가 없는 것이다.
d / d2 / d3 / d4메서드 <-- 4개의 결과를 알아보자.
(1) d : 생성자의 생성이 없으므로, print()메서드가 실행될 것이며, 다음으로 기본생성자에서 지정한 "년도/월/일"의 초기값이 출력될 것이다.
(2) d2 : 년도가 "2014"로 바뀌어 출력될 것이다.
(3) d3 : "년도/월"이 "2015/8"로 바뀌어 출력될 것이다.
(4) d4 : "년도/월/일"이 "2016/9/24"로 바뀌어 출력될 것이다.
결과
<연습문제> 메서드 오버로딩을 이용해 다음의 값 출력하기!
위 그림의 코딩을 메서드 오버로딩을 이용하여 바꿔보자.
(1)문자열형 (2)정수형 (3)실수형 (4)문자형 (5)논리형 <-- 순서이다.
<정답>
*메서드의 기능 : 비정형 인자, 향상된 for문 활용
<num.length>: 매개변수의 길이를 자동으로 인식해주는 것.
- 일반 메소드(2개) : sum(매개변수 2개), sum(매개변수 3개)
- 비정형인자 메소드(1개) : sum(int ...num) <-- 요렇게 씀.
-> 그 안의 향상된 for문이 있음(참고).
마지막 3번째 출력문에서 인자값을 5개로 지정했는데,
7개든, 8개든 상관없이 지정해줄 수 있다는 장점이 있다.
*생성자 오버로딩(2)
- 기본 생성자 Point2
- 생성자 오버로딩
- showPoint메서드
- 메인 메서드
계속됩니다.........
'N스크린하이브리드앱과정 > JAVA' 카테고리의 다른 글
[2주][2일] 메서드 오버라이딩 (0) | 2013.07.23 |
---|---|
[2주][2일] JAVA: 상속 - 미완료 (0) | 2013.07.23 |
[2주][1일차] 캡슐화와 데이터 은닉. 다형성과 메서드 오버로딩 (0) | 2013.07.22 |
[5일차] JAVA: 클래스와 메서드 활용 실습 (0) | 2013.07.19 |
[5일차] JAVA : 객체지향 프로그래밍. 객체와 메서드 혼합. 실습 (0) | 2013.07.19 |