출간일 2016년 11월 28일
판매가 2000원
형태 ebook
이 책의 모든 내용은 http://ehpub.co.kr에 공개하고 있습니다.
학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.
언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.
4.3 중복 정의(Overloading)
Java 언어에서는 클래스의 멤버 메서드의 입력 매개 변수 리스트가 충분히 다르면 같은 이름으로 여러 개의 멤버 메서드를 정의할 수 있습니다. 이러한 특징을 메서드 중복 정의(Overloading)이라고 부릅니다.
예를 들어 원을 클래스로 정의합시다. 원 개체를 생성할 때는 반지름을 입력 인자로 생성하게 하고 면적을 구하는 메서드를 제공합시다. 만약 입력 인자를 전달하지 않으면 원의 넓이를 구하고 입력 인자로 각 정보를 전달하면 호의 면적을 구합니다. 이 때 입력 인자를 전달하지 않고 원의 넓이를 구하는 메서드와 각 정보를 전달하여 호의 면적을 구하는 메서드의 이름을 같은 이름으로 정의할 수 있습니다.
public double calculateArea(){
return calculateArea(3.14*2);
}
public double calculateArea(double radian){
return (radian/2.0)*radius*radius;
}
원 개체를 참조하는 변수로 calculateArea 메서드를 호출할 때 입력 인자를 전달하지 않거나 혹은 각 정보를 전달하면 적절한 메서드를 호출합니다.
circle.calculateArea(); //double calculateArea() 멤버 메서드 호출
circle.calculateArea(3.14); //double calculateArea(double radian); 멤버 메서드 호출
주의할 점은 메서드의 접근 지정자와 반환 형식은 중복 정의와 관계가 없습니다. 이는 반환 형식만 다르거나 접근 지정만 다른 메서드를 중복 정의할 수 없다는 말입니다.
public class Circle { double radius; public Circle(double radius){ this.radius = radius; } public double calculateArea(){ return calculateArea(3.14*2); } public double calculateArea(double radian){ return (radian/2.0)*radius*radius; } public double getRadius(){ return radius; } } public class Program { public static void main(String[] args){ Circle circle = new Circle(1); System.out.println("반지름이 "+circle.getRadius()+ "인 원의 넓이:"+circle.calculateArea()); System.out.println("반지름이 "+circle.getRadius()+ "인 반원의 넓이:"+circle.calculateArea(3.14)); } } |
반지름이 1.0인 원의 넓이:3.14 반지름이 1.0인 반원의 넓이:1.57 |
[소스 4.5] calculateArea 메서드 중복 정의
'언어 자료구조 알고리즘 > 디딤돌 Java 언어 Part1' 카테고리의 다른 글
[Java] 5.3 추상화 (0) | 2016.11.14 |
---|---|
[Java] 5.2 다형성 (0) | 2016.04.04 |
[Java] 5. OOP 상속과 다형성, 5.1 상속 (0) | 2016.04.04 |
[Java] 4. 5 정적 멤버와 static 키워드와 상수화에 사용하는 final 키워드 (0) | 2016.04.04 |
[Java] 4.4 개체의 생성과 소멸 (0) | 2016.04.04 |
[Java] 4.2 접근 지정자, Java 언어 (0) | 2016.04.04 |
[Java] 4.1 클래스 정의, Java 언어 (0) | 2016.04.04 |
[Java] 4. OOP 캡슐화 (0) | 2016.04.04 |
[Java] 3.3 반복문 (while, for, break, break 레이블, continue) (0) | 2016.04.04 |
[Java] 3.2 선택문 (0) | 2016.04.04 |