today_is
[ function ] 본문
오늘의 목표 >>
미리 함수를 만들어두고 필요할때마다 호출해보자!
Quiz >
원의 반지름을 전달받아, 원의 넓이를 반환하는 함수
원주율은 3.14로 간주한다
단, 사용자가 정수를 입력하든, 실수를 입력하든 모두 정상 작동되도록 하여라.
package function;
public class Ex01 {
static double getCircleArea(int radius) { // 정수를 넣어도 정상 실행
double area = radius * radius * 3.14;
return area;
}
static double getCircleArea(double radius) { // 실수를 넣어도 정상 실행
double area = radius * radius * 3.14;
return area;
}
public static void main(String[] args) {
// 함수 오버로딩 : 같은 이름의 함수에 여러 정의가 연결되어 있다
// 같은 이름으로 여러 함수가 중복으로 정의 될 수 있다
// 예시 1) 문자열을 사용하는 substring 함수
// 인자 1개 입력값이 begin begin ~ 끝
// 인자 2개 입력값이 각각 begin , end begin ~ end -1
String text = "Authentication Number is 132675";
String s1 = text.substring(15); // 문자열을 잘라내고 싶다면 substring
String s2 = text.substring(15, 21);
System.out.println("s1 : " + s1);
System.out.println("s2 : " + s2);
// 오버로딩된 함수를 호출할때는
// 값만 넣으면 자료형에 맞게 알아서 정의를 찾아감
double d1 = getCircleArea(3);
double d2 = getCircleArea(2.2);
System.out.printf("d1 : %.2f\n", d1);
System.out.printf("d2 : %.2f\n", d2);
// 함수 오버로딩의 기준은 매개변수의 개수 및 자료형, 혹은 매개변수의 순서
// 반환자료형은 오버로딩에 영향 XXX
}
static int add(int n1, int n2) {
return n1 + n2;
}
static double add(double n1, double n2) {
return n1 + n2;
}
static String add(String n1, String n2) {
return n1 + n2;
}
}
}
study_review >>
사용자는 코드가 어떻게 작성되어있는지 알 수가 없다 !!
지금처럼 반지름을 입력하고 원주율을 구하는 프로그램을 작동할때 사용자가 어떤 자료형으로 입력할지 정확히 알 수없다.
최대한 입력의 범위를 미리 지정하고 사용자에게 알려준 뒤에, 다른 방식으로 입력하였을때도 정상작동되도록 구현해야한다 !!
tip >>
메서드 오버로딩 덕분에 복사 붙여넣기를 통해 여러 메서드를 만들 수 있으나, 오버로딩이 불가능한 경우도 있다
메서드 오버로딩이 불가능한 경우
1) 매개변수의 자료형 일치 2) 매개변수 개수 일치 3) 매개변수 순서 일치
'java' 카테고리의 다른 글
DAO 와 DTO (template 이용) - 1 (0) | 2023.12.03 |
---|---|
[ exception ] 예외 처리 (0) | 2023.12.03 |
[ for ] 별찍기 - 심화 (0) | 2023.12.01 |
[ for ] 별찍기 (0) | 2023.11.30 |
[ 프로그래머스 java ] 신규 아이디 추천 (Lv.1) (0) | 2023.11.27 |