오버라이딩 조건 중 하나는 반환타입이 같아야 한다는 것이다.
하지만 완전히 똑같아야 하는 것은 아니다.
기존 반환타입이 부모타입 & 오버라이딩한 반환타입이 자식타입인 케이스는 가능하다.
즉 오버라이딩시 반환타입을 변경하고 싶을 경우 상속관계가 있는 반환타입으로 변경할 수 있다.
[ 예시 상황 ]
xxxRepository가 CrudRepository<Entity, idType>을 상속하고있고
부모인 CrudRepository는 findAll()메서드를 가지고 있으며 반환타입은 Iterable<Entity>이다.
그러나 Iterable<Entity>로 반환하고 싶지 않고 그냥 List<Entity>로 반환하고 싶을 수도 있다.
여기서 오버라이딩의 조건이 생각난다. 오버라이딩시 반환타입이 동일해야 한다는 조건이다.
하지만 반환타입이 동일하지 않다고 해서 망설일 필요가 없다!
Iterable의 하위타입이 List이므로 반환타입을 변경하여 오버라이딩 가능하다.
반응형
'JAVA' 카테고리의 다른 글
[Java] String 연결하기(더하기) 효율적인 방법 (0) | 2022.09.07 |
---|---|
웹개발 집중학습용으로 블로그 개설 (0) | 2022.07.19 |
실전 JAVA 소프트웨어 개발 | 입출금 내역 분석기 확장 실습하기 (0) | 2022.04.06 |
JAVA 코테 | Scanner, println → BufferedReader/Writer | 시간초과로 입출력 변경 (0) | 2022.03.28 |
실전 Java 소프트웨어 개발 | 입출금 내역 분석기 실습하기 (0) | 2022.03.26 |