// overloading : 메소드 중복정의
// 메소드 이름은 같지만 메소드 괄호안에 있는 매개변수의 개수가 다르거나 자료형이 다르면 다른메소드이다.
public class Ex10_overloading {
public static void main(String[] args) {
Test10 ob = new Test10();
ob.print();
short a = 10;
ob.print(a); // int: 10
// 동일한 기본자료형의 인수를 가진 메소드가 없으면
// 기본자료형중에 가장 가까운 큰 자료형의 메소드 호출
Short b = 10;
ob.print(b); // Short: 10
int c=10;
ob.print(c); // int: 10
long d=10;
ob.print(d); // Long: 10
// 매개변수 인수가 기본자료형 중 같거나 큰 것이 없는 경우
// Wrapper 클래스가 존재하면 Wrapper에서 찾는다.
// Wrapper 클래스도 없으면 컴파일 오류
// 기본자료형이 우선순위가 높음.
// long 은 8byte 이므로 기본자료형의 인스턴스 메소드에서 기본자료형은 int(4byte)형
// 밖에 없으므로 Wrapper 클래스 Long 으로 가서 출력!
}
}
class Test10 {
public void print() {
System.out.println("인자가 없는 메소드");
}
/* // 컴파일 오류. 메소드 오버로딩이 아니다. 오버로딩은 매개변수의 개수가 다르거나 자료형이 달라야한다.
public int print() {
return 1;
}
매개변수의 타입이 다르거나, 매개변수의 개수가 달라야 한다.
자료형이 다르다고 메소드 이름을 다 다르게 주면 가독성이 떨어짐.
System.out.println() 메소드의 중복정의의 예.
데이터타입이 달라도 출력하는 것은 다 같음
리턴타입으로 구분하는 것이 아님!
*/
// Wrapper 클래스 : 기본 자료형에 대응하는 클래스로 Short, Integer, Long 등...
// Short : Wrapper 클래스. 기본자료형인 short를 클래스로 작성한 것★★★
public void print(Short a) {
System.out.println("Short: "+a);
}
public void print(int a) {
System.out.println("int: "+a);
}
// Long : Wrapper 클래스. 기본자료형인 long을 클래스로 작성한 것.
public void print(Long a) {
System.out.println("long: "+a);
}
public void print(int a, int b) {
System.out.println("매개변수 2개: "+a+","+b);
}
}
'쌍용강북교육센터 > 7월' 카테고리의 다른 글
0714_Ex12_객체 배열 (0) | 2021.07.15 |
---|---|
0714_Ex11_method : 비정형인자 (0) | 2021.07.15 |
0714_Ex08_recursion (1) | 2021.07.14 |
0714_Ex07_recursion : 재귀호출 (0) | 2021.07.14 |
0714_Ex06_객체는 레퍼런스 변수이다. (0) | 2021.07.14 |