반응형
Overriding
- 부모 클래스의 상속 받은 메소드를 재정의 하는 것
@Override
- 오버라이딩을 할 때 프로그래머의 실수를 방지 하기 위해 사용
- 부모 클래스의 메소드와 이름이 다르면 에러 출력
- 오버라이딩을 할 메소드 위에 어노테이션 오버라이드를 정의
@Override 예시
부모 클래스의 print 메소드를 자식 클래스에서 오버라이딩
오버라이딩하는 메소드 위에 @Override 정의
public class Parent {
protected String pMsg;
public void print() {
System.out.println("Parent : " + pMsg);
}
}
public class Child extends Parent {
protected String cMsg;
@Override
public void print() {
super.print();
System.out.println("Parent : " + cMsg);
}
}
만약 @Override를 정의하지 않는다면?
아무 일도 일어나지 않는다.
다만, 오버라이딩하는 메소드의 이름이 틀릴 경우 프로그램이 잘못 작동 될 확률 높다.
그렇기 때문에 프로그래머의 실수를 방지하기 위해서 사용해두는 것이 좋다.
- 오버라이딩하는 메소드의 이름 print
- 자식 클래스에서 printChild 메소드로 오버라이딩 시도
public class Child extends Parent {
protected String cMsg;
@Override
public void printChild() {
super.print();
System.out.println("Parent : " + cMsg);
}
}
- 에러 - 오버라이딩 할 메소드가 부모 클래스의 메소드와 다름
반응형