본문 바로가기

BackEnd/Java

메서드 오버라이딩 (Overriding)

** 오버라이딩의 정의와 필요성에 대해 설명하시오

 

오버라이딩이란 상속받은 부모 관계의 클래스의 메서드와 시그니처(이름, 파라미터 등)가

완벽하게 동일한 메서드를 새롭게 재정의하는 것이며, 자식 클래스가 최대한 상속받은 메서드를 활용할 수 있도록 하는 것

 

오버라이딩 단축키 : Alt + Shift + S + v

 

자동으로 오버라이딩을 하면 오버라이딩 된 메서드 위에 '@Override'라는 어노테이션(Annotation, 주석)이 붙는데

이 주석이 붙는 이유는 코딩의 실수를 방지하기 위함이다.

 

이 주석은 컴파일 시 오버라이딩 된 메서드 코드를 검증하는데 오버라이딩이 실제로 시행되지 않았다면

에러를 발생시킨다.

 

[ 오버라이딩의 조건 ]

 

1. 상속이 필수로 전제되어야 함

2. 메서드 시그니처 (이름, 파라미터의 타입 및 갯수, 리턴 타입) 가 100% 동일해야 함

3. 접근제한자는 슈퍼클래스의 메서드와 같거나 넓어야 함 (확대만 가능, >=)

4. 예외 클래스 사용 범위는 축소만 가능함

5. private, static, final 키워드가 사용된 메서드는 오버라이딩 불가

 

 

예문

 

class Parent {
	public void parentPrn() {
    	System.out.println("슈퍼클래스의 parentPrn()");
    }
}

class Child extends Parent {
	@Override
	public void parentPrn() {
    	System.out.println("서브클래스에서 오버라이딩 된 parentPrn()");
    }
}