일반적으로 재정의에서 상위 클래스와 하위 클래스의 메소드는 동일한 이름과 매개변수를 갖습니다. 단, 리턴 타입의 경우, 서브 클래스의 메소드는 슈퍼 클래스의 메소드 리턴 타입의 서브 타입을 리턴할 수 있습니다.
예시
다음 예제 슈퍼 클래스에 demoMethod()라는 메서드가 있는 것을 관찰하면 유형 목록의 값을 반환합니다. 이 메서드를 재정의하면 하위 클래스의 메서드가 List 유형의 값을 반환할 수 있습니다. (슈퍼클래스에 있음) 또는 목록의 하위 유형을 반환할 수도 있습니다. ArrayList, Stack, Vector 등과 같은 (수퍼 클래스의 메서드 반환 유형)
이 시나리오에서 하위 클래스 메소드는 상위 클래스, 즉 List의 반환 유형의 하위 유형인 ArrayList를 반환합니다. 이 하위 유형(ArrayList)은 로 알려져 있습니다. 공변량 유형 .
예시
class Test{ int data =100; Test demoMethod(){ return this; } } public class Sample extends Test{ int data = 1000; Sample demoMethod(){ return this; } public static void main(String args[]){ Sample sam = new Sample(); System.out.println(sam.demoMethod().data); } }
출력
1000