🟩 함수 오버로드(overload)
동일한 기능, 동일한 이름의 메소드에 여러가지 매개 변수를 추가하여
(하나의 함수 이름에 매개 변수를 과적하여) 기능을 확장시킨 함수 (옵션이 있는 함수)
(EX) print 메소드, print라는 함수의 의미는 살리면서 선택해서 사용할 수 있어졌다.
이때 과적된 내용을 가지고 있는 녀석이 기본 함수 안에 들어가는 방법으로, 중복된 내용을 반복시키지 않고 구현해 줄 수 있다.
→ 과적된 애는 인자가 더 많아서 품을 수 있는 애가 많기 때문에 과적함수(오버로딩)가 기본 함수(과적된 내용이 없이 기본값을 가진 함수) 안으로 들어감
기존 함수가 있는데 동일한 함수에 일정 기능을 추가해서 사용하고 싶을 때 사용한다.
//성적 출력
examPrint(list);
System.out.println();
examPrint(list,3);//Overload(과적) 함수
기존 메서드를 이용하면 전체내용을 출력하는데, 3개만 출력하고 싶을 때 위처럼 만듦.
//성적 출력
examPrint(list);
System.out.println();
examPrint(list,3);//Overload(과적) 함수
private static void examPrint(ExamList list, int limit) {
Exam[] exams= list.exams;
int size = limit;
int num=1;//성적 등수 확인용 숫자.
for (int i = 0; i < size; i++) {
Exam exam = exams[i];
int kor = exam.kor;
int eng = exam.eng;
int math = exam.math;
int total = exam.total;
float avg = exam.avg;
// if (avg >= 80)//성적 80이상
System.out.printf("%d등 %3d, %3d, %3d, 총점 %3d 평균 %.2f\n", num, kor, eng, math, total, avg);
num++;
}
}
private static void examPrint(ExamList list) {
Exam[] exams= list.exams;
int size = list.index;
int num=1;//성적 등수 확인용 숫자.
for (int i = 0; i < size; i++) {
Exam exam = exams[i];
int kor = exam.kor;
int eng = exam.eng;
int math = exam.math;
int total = exam.total;
float avg = exam.avg;
// if (avg >= 80)//성적 80이상
System.out.printf("%d등 %3d, %3d, %3d, 총점 %3d 평균 %.2f\n", num, kor, eng, math, total, avg);
num++;
}
}
위에처럼 짜면 코드가 길어져서 아래와 같이 작성할 수 있다.
private static void examPrint(ExamList list) {//오버로드 함수
int size = list.index;
examPrint(list, size);
}
private static void examPrint(ExamList list, int limit) {
Exam[] exams = list.exams;
int size = limit;
int num = 1;//성적 등수 확인용 숫자.
for (int i = 0; i < size; i++) {
Exam exam = exams[i];
int kor = exam.kor;
int eng = exam.eng;
int math = exam.math;
int total = exam.total;
float avg = exam.avg;
// if (avg >= 80)//성적 80이상
System.out.printf("%d등 %3d, %3d, %3d, 총점 %3d 평균 %.2f\n", num, kor, eng, math, total, avg);
num++;
}
}
아래 코드는 혼자서 오버로드 함수를 구현해 본 것이다.
//overloading
{
aaprint();
aaprint(3);
}
private static void aaprint() {
int defaultNum = 10;//기본 값 10
aaprint(defaultNum);
}
private static void aaprint(int limit) {
int size = limit;
for (int i = 0; i < limit; i++)
System.out.println("출력");
}
'IT > JAVA' 카테고리의 다른 글
[JAVA] ✏️ Boxing과 Unboxing (1) | 2023.07.09 |
---|---|
[Java] 컬렉션(Collection) ? (1) | 2023.07.09 |
[Java]구조적인 프로그래밍(메서드) (2) | 2023.06.28 |
[JAVA] 변수와 상수변수 (0) | 2023.06.26 |
[Java] 배열(Array) (0) | 2023.06.21 |