반응형
오버라이딩(Overriding)
상속받은 하위 클래스에서 메서드 재정의 하기
상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음
전 상속 내용에서 봤던 예제를 보면..
Customer클래스에는 calcPrice( )[할인율] 메서드가 선언되어있지만, VIPCustomer 클래스에는 적용 X
재정의 구현 예제
@Override
public int calcPrice(int price) {
bonusPoint += price * bonusRatio;
return price - (int)(price * salesRatio);
}
@overriding 애노테이션 (annotation)
annotation은 spring에서 많이 사용된다.
· 애노테이션은 원래 주석이라는 의미
· 컴파일러에게 특별한 정보를 제공해주는 역할
형 변환과 오버라이딩 메서드 호출
(앞 예제) Customer vc = new VIPCustomer( );
vc 변수의 타입은 Customer지만 인스턴스의 타입은 VIPCustomer
자바에서는 항상 인스턴스의 메서드가 호출됨(가상 메서드의 원리)
자바의 모든 메서드는 가상 메서드(virtual method) 임
c++에서는 가상 메서드임을 나타내기 위해 virtual을 명시해줘야 한다.
반응형
'개발 > Java' 카테고리의 다른 글
추상 클래스(abstract class) (0) | 2021.04.26 |
---|---|
다운 캐스팅과 instanceof (0) | 2021.04.26 |
객체 간의 상속 (0) | 2021.04.24 |
객체 배열을 구현한 클래스 ArrayList (0) | 2021.04.23 |
2차원 배열 (0) | 2021.04.23 |