자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있는데 이것을 오버로딩이라고 한다.
class Overloading{
public void print() {
System.out.println("오버로딩");
}
String print(Integer a) {
return a.toString();
}
void print(String a) {
System.out.println(a);
}
String print(Integer a, Integer b) {
return a.toString() + b.toString();
}
}
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라 한다.
자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.
class Person {
void age() {
System.out.println("1-100");
}
}
class Child extends Person {
@Override
protected void age() {
System.out.println("10");
}
}
class Senior extends Person {
@Override
public void age() {
System.out.println("70");
}
}