프로그래밍/Java | 2014. 6. 25. 23:35
오버라이딩(Overriding)
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
조건?
이름이 같아야 한다.
매개변수가 같아야 한다.
리턴타입이 같아야 한다.
즉, 선언부는 일치해야 한다는 것이다.
단, 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경 할 수 있다.
오버라이딩할때 주의해야 하는 것들이 있다.
1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
3. 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.
1. 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.
조상은 protected라면 오버라이딩 하는 자손은
protected 또는 public 이어야 한다.
참고.
넓은것 -> 좁은것 순서
public, protected, default, private
2. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
class Parent
{
void parentMethod() throws IOException, SQLException
{
}
}
class Child extends Parent
{
void parentMehod() throws IOException
{
}
}
질문 : 만약 IOException이 아닌, Exception으로 예외 처리 한다면 될까?
답: NO ! 개수의 문제도 있지만, Exception이 모든 예외의 최고 조상이므로 가장 많은 개수의 예외를 던지기 때문에 안된다!
[Java] 접근 제어자(access modifier) - public, protected, ( default ), private (0) | 2014.06.27 |
---|---|
[Java] 제어자 (modifier)에 대한 이야기 (0) | 2014.06.27 |
[Java] package와 import (0) | 2014.06.25 |
[Java] Super (0) | 2014.06.25 |
[Java] 단일상속(single inheritance) & Object 클래스 (0) | 2014.06.24 |
[Java] 상속(inheritance)에 대한 이야기 (0) | 2014.06.24 |
[Java] 변수 초기화에 대한 이야기 (0) | 2014.06.24 |
[Java] 생성자(Constructor)에 대한 이야기 (0) | 2014.06.24 |
[Java] 재귀호출에 대한 이야기 (0) | 2014.06.23 |
[Java] JVM의 메모리 구조 (0) | 2014.06.23 |
Recent Comments