[Java] 오버라이딩
오버라이딩
슈퍼클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 내용을 그대로 사용하기도 하지만 보통 내용을 추가하여 사용하는 경우가 많다.
- 매서드 선언부가 슈퍼 클래스의 메서드와 일치해야 한다.
오버라이딩은 메서드의 내용만을 새로 작성하는것이기 때문에 메서드이름, 매개변수, 반환타입은 슈퍼클래스와 완전히 일치해야한다.
- 접근제어자는 슈퍼 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.
슈퍼클래스에서 접근제한자 protected라면, 오버라이딩해서 사용할때는 서브클래스에서 메서드 접근제한자를 설정할때는 protected 또는 public으로 선언해줘야한다.
- 슈퍼클래스의 메서드의보다 많은 수의 예외를 선언할 수 없다.
class Parent {
void parentMethod() throws IOException, SQLException{
. . .
}
}
class child extends Parent {
void parentMethod() throws IOException {
. . .
}
}
위에 코드를 보면 슈퍼클래스보다 서브클래스 parentMethod()에서 예외 개수가 적기 때문에 올바르게 오버라이딩 되었다고 볼 수 있다.
오버라이딩과 오버로드
오버로딩과 오버라이딩은 이름이 비슷해서 헷갈릴수도 있지만 명백하게 다른것이라는 것을 알수 있다.
오버라이딩
◇ 상속받은 메서드의 내용을 변경하는 것
오버로딩
◇ 기존에 없는 새로운 메서드를 정의
class Parent {
void parentMethod(){}
}
class Child extends Parent {
void parentmethod() {} // 오버라이딩
void parentmethod(int i) {} // 오버로딩
void childmethod() {}
void childmethod(int i) {} // 오버로딩
}
댓글남기기