- 오버로딩(Overloading)
오버로딩 예제
- 같은 클래스에 이름이 같은 메서드가 여러개 존재 할 수 있다.
단 매개변수 목록이 달라야 한다.(자료형기준. 자료형[es:int,double,...],갯수, 순서)
=> 매개변수 이름이 아니고 자료형으로 판단함.
- 메서드의 다형성.
📌
package chap6;
class Math3{
int a = 100;
int add(int b) {
System.out.println("1: ");
return a+b;
}
double add(double b) {
System.out.println("2: ");
return a+b;
}
String add(String b) {
System.out.println("3: ");
return a+b;
}
}
public class OverloadingEx1 {
public static void main(String[] args) {
Math3 m3 = new Math3();
System.out.println(m3.add(10)); //1
System.out.println(m3.add(10.3)); //2
System.out.println(m3.add("번호")); //3
System.out.println(m3.add(10L)); //2. 자동형변환이 가능한 메서드 검색해서 호출.
}
}
- 오버로딩의 조건
오버로딩의 조건
1. 메서드의 이름이 같다.
2. 매개변수(자료형기준)의 목록이 다르다. : 자료형의 순서, 갯수, 종류 달라야 한다.
3. 그외 리턴타입, 접근제어자, 예외처리는 상관 없다.(같아도 괜찮고 달라도 괜찮다.)
- 오버로딩 메서드의 선택 기준
오버로딩된 메서드의 선택 기준.
1. 호출시 입력된 값의 자료형과 선언부 자료형이 동일한 경우 우선 선택
2. 1번이 없는 경우
: 자동 형변환이 최소화 되는 매개변수를 가진 메서드 선택
3. 주의사항
: 최소 갯수로 자동형변환 되는 매개변수를 가진 매서드가 2개 이상 존재하면 오류 발생
📌
package chap6;
class Math4{
int add(int a, int b) {
System.out.print("1: ");
return a+b;
}
long add(long a, int b) {
System.out.print("2: ");
return a+b;
}
long add(int a, long b) {
System.out.print("3: ");
return a+b;
}
long add(long a, long b) {
System.out.print("4: ");
return a+b;
}
}
public class OverloadingEx2 {
public static void main(String[] args) {
Math4 m = new Math4();
System.out.println(m.add(10, 20)); //자동 형변환 선택지가 2개나 된다면 선택을 하기 힘들어서 오류가 남.
System.out.println(m.add(10, 20L));
System.out.println(m.add(10L, 20));
System.out.println(m.add(10L, 20L));
}
}
'수업(국비지원) > Java' 카테고리의 다른 글
| [Java] chap6 : 클래스와 객체 - 생성자 Exam 4-5 (0) | 2023.04.15 |
|---|---|
| [Java] chap6 : 클래스와 객체 - 생성자, 생성자 오버로딩 (0) | 2023.04.15 |
| [Java] chap6: 클래스와 객체 - 클래스와 인스턴스의 호출, 매개변수의 자료형 (0) | 2023.04.15 |
| [Java] chap6 : 클래스와 객체 - Stack영역과 재귀함수 (0) | 2023.04.15 |
| [Java] chap6 : 클래스와 객체 - 클래스 구현 (0) | 2023.04.15 |