Overloading의 조건
1. 이름이 같아야 함.
2. 매개변수의 갯수나 타입이 달라야 함.
3. 반환 타입이 달라도 상관이 없다.
public static void main(String[] args) {
int i1 = 3, i2 = 7, i3 = 10;
double d1 = 7.0, d2 = 3.0;
System.out.printf("max(%d, %d) = %d\n", i1, i2, max(i1, i2));
System.out.printf("max(%.1f, %.1f) = %.1f\n", d1, d2, max(d1, d2));
System.out.printf("max(%d, %d, %d) = %d\n", i1, i2, i3, max(i1, i2, i3));
}
public static int max(int n1, int n2) {
int result = n1 > n2 ? n1 : n2;
return result;
}
public static double max(double n1, double n2) {
double result = n1 > n2 ? n1 : n2;
return result;
}
public static int max(int n1, int n2, int n3) {
// int result = n1 > n2 ? n1 : n2;
// result = result > n3 ? result : n3;
return max(max(n1, n2), n3);
}
Overriding의 조건
class Parent {
void parentMethod() {}
}
class Child extends Parent {
void parentMethod() {} // overridng
void parentMethod(int i) {} // overloading
void childMethod() {}
void childMethod(int i) {} // overloading
void childMethod() {} // error. 중복정의 되었음
// already defined in Child
}