중복 정의(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
'프로그래밍 기술 > 안드로이드' 카테고리의 다른 글
[안드로이드] 40. Java super 키워드를 이용한 기반 형식부분 생성 (0) | 2016.05.16 |
---|---|
[안드로이드] 39. OOP - 상속과 다형성 - 상속 개요 (0) | 2016.05.16 |
[안드로이드] 38. Java 정적 멤버와 static 키워드 (0) | 2016.05.16 |
[안드로이드] 37. Java 생성자 중복정의, this, this() (0) | 2016.05.16 |
[안드로이드] 36. Java 개체의 생과 사 (0) | 2016.04.17 |
[안드로이드] 34. Java 접근 지정자 (0) | 2016.04.17 |
[안드로이드] 33. Java 클래스 정의하기 (0) | 2016.04.17 |
[안드로이드] 32. Java OOP 개요 (0) | 2016.04.17 |
[안드로이드] 31. Java continue 문 (0) | 2016.04.17 |
[안드로이드] 30. Java break 레이블문 (0) | 2016.04.17 |