N스크린하이브리드앱과정/JAVA

[2주][1일차] JAVA: 생성자 오버로딩 - 미완료

광천스러움 2013. 7. 22. 19:21

*생성자 오버로딩(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메서드

 

 - 메인 메서드

 

 계속됩니다.........