728x90
📋 메서드 오버로딩(overloading)
- 이름이 같고 매개변수가 다른 메서드를 여러개 정의하는 것
- 같은 이름의 메서드를 여러개 정의했다는 뜻으로 이해
📋 오버로딩 규칙
- 메서드의 이름이 같아도 매개변수의 타입 및 순서가 다르면 오버로딩 가능 //반환 타입은 인정하지 않음
❗️오버로딩 실패 case
int add(int a, int b)
double add(int a, int b)
=> 메서드 이름과 매개변수의 타입이 같으므로 컴파일 오류가 발생한다. 반환 타입은 인정x
(메서드 이름과 매개변수 타입이 다 같은데 int/double같은 반환 타입만 다르게 하는 것은 인정하지 않는다는 소리)
int add(int a, int b)
int add(int c, int d)
이것도 단순히 변수명만 바꿨다해도 메서드 이름과 매개변수 타입이 다 같아서 인정x
// 매개변수의 갯수가 다른 case
package overloading;
public class Overloading1 {
public static void main(String[] args) {
System.out.println("1: " + add(1,2));
System.out.println("2: " + add(1,2,3));
}
public static int add(int a, int b){
System.out.println("1번 호출");
return a + b;
}
public static int add(int a, int b, int c){
System.out.println("2번 호출");
return a +b +c;
}
}
// 매개변수의 타입이 다른 case
package overloading;
public class Overloading2 {
public static void main(String[] args) {
myMethod(1,1.2); //1번 호출
myMethod(1.2,1); //2번 호출
}
public static void myMethod(int a, double b){
System.out.println("int a, double b");
}
public static void myMethod(double a, double b){
System.out.println("double a, double b");
}
}
// 반환타입과 매개변수의 타입이 다른 case
package overloading;
public class Overloading3 {
public static void main(String[] args) {
System.out.println("1: " + add(1,2)); //1번 호출 //1번 없애면 2번(자동형변환)
System.out.println("2: " + add(1.2,1.5)); //2번 호출
}
public static int add(int a, int b){
System.out.println("1번 호출");
return a + b;
}
public static double add(double a, double b){
System.out.println("2번 호출");
return a + b;
}
}
📌 먼저 본인의 타입에 최대한 맞는 메서드를 찾아서 실행하고, 그래도 없으면 형 변환 가능한 타입의 메서드를 찾아 실행한다.
(김영한님의 자바입문 강의를 보고 정리한 글입니다)
'Coding > JAVA' 카테고리의 다른 글
| [JAVA] 입출금 리팩토링 (0) | 2024.08.18 |
|---|---|
| [JAVA] 메서드 호출로 코드 리팩토링 (0) | 2024.08.17 |
| [JAVA] 상품 등록 프로그램 (0) | 2024.08.15 |
| [JAVA]2차원 배열 예제 - 학생 점수 평균 구하기 (0) | 2024.08.02 |
| [JAVA]배열 가장 작은 수 , 큰 수 찾기 (0) | 2024.08.02 |