[Java] 오버라이딩(Overriding)

오버라이딩(Overriding)






조상 클래스로부터 상속받은 메서드 내용 변경하는 것

 

 

조건?

  1.  이름이 같아야 한다.

  2.  매개변수가 같아야 한다.

  3.  리턴타입이 같아야 한다.

 

즉, 선언부는 일치해야 한다는 것이다.

단, 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경 할 수 있다.


오버라이딩할때 주의해야 하는 것들이 있다.


1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.

3. 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.

 



1. 접근 제어자는 조상 클래스의 메서드보다 좁은 범위변경 할 수 없다.

조상은 protected라면 오버라이딩 하는 자손은

protected 또는 public 이어야 한다.

 

참고.

넓은것 -> 좁은것 순서

public,  protected,  default,  private

 


 




2. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

class Parent

{

void parentMethod() throws IOExceptionSQLException

{

}

}

 

class Child extends Parent

{

void parentMehod() throws IOException

{
}

}

 

질문 : 만약 IOException이 아닌, Exception으로 예외 처리 한다면 될까?

 

답: NO ! 개수의 문제도 있지만,  Exception이 모든 예외의 최고 조상이므로 가장 많은 개수의 예외를 던지기 때문에 안된다!