상위 클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의
오버라이딩 하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.
예) 아래와 같은 경우, SuperClass의 fun이라는 인터페이스를 통해 subClass의 fun이 실행된다.
SuperClass object = new SubClass();
object.fun();
같은 이름의 메소드를 필요에 맞게 중복정의
한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 존재하더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
메소드 이름 동일, 매개변수의 개수 또는 반환 타입이 달라야 한다.
주의할 점은 'return 값만' 다른 것은 overloading 할 수 없다.
다양한 오버로딩 메소드
void main(){
OverloadingClass oc = new OverloadingClass();
oc.print(); // 오버로딩1
System.out.println(oc.print(2)); // 오버로딩2\n 2
oc.print("Hello"); // 오버로딩3\n Hello
System.out.println(oc.print(4, 5)); // 오버로딩4\n 45
}
class OverloadingClass{
void print(){
System.out.println("오버로딩1");
}
String print(Integer a){
System.out.println("오버로딩2");
return a.toString();
}
void print(String a){
System.out.println("오버로딩3");
System.out.println(a);
}
String print(Integer a, Integer b){
System.out.println("오버로딩4");
return a.toString() + b.toString();
}
}