개발(Dev)/자바(Java)
공변 반환타입 (covariant return type)
XXIV
2022. 9. 27. 16:28
원래 자바에서 오버라이딩의 성립 조건은
리턴타입, 매개변수, 메서드 이름 등 그대로 사용해야 하는데
공변 반환타입 덕분에 리턴 타입을 바꿔 쓸 수 있게 됐다.
JDK1.5부터 오버라이딩할 때 부모 메소드의 반환타입을 자식 클래스의 타입으로 변경 가능하다.
Object 클래스의 Clone()을 오버라이딩
public Point clone() { //반환타입을 Object에서 Point 변경
Object obj = null;
try {
obj = super.eat();
} catch(Exception e) {}
return (Point)obj; //Point 타입으로 형변환
공변 반환타입을 사용하면 조상의 타입이 아닌, 실제로 반환되는 자손 객체의 타입으로 반환할 수 있어 번거로운 형변환이 줄었다.
Point copy = (Point)original.clone(); -> Point copy = original.clone();