한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것
메서드 이름이 같아야 한다.
매개 변수의 개수 또는 타입이 달라야 한다.
위 조건을 만족시키지 못하는 메서드는 중복 정의로 컴파일 시에 에러 발생
ex)
void println();
void println(boolean x);
void println(char x);
void println(car[] x);
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
자손 클래스에서 오버라이딩하는 매서드는 조상 클래스의 메서드와
접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경 가능
접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.
조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
ex
class Parent {
void parentMethod () throws IOException, SQLException {
...
}
}
class Child1 {
void parentMethod() thrwos IOException{
...
}
}
class child2 {
void parentMethod() throws Exception{
...
}
}
위에서 Parent1을 Child1에서 오버라이딩 한 것은 적절하게 됨
Parent1을 Child2에서 오버라이딩 한 것은 Exception의 예외 개수가 더 많기 때문에 부적절한 오버라이딩