Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java의 공변 반환 유형은 무엇입니까?

<시간/>

일반적으로 재정의에서 상위 클래스와 하위 클래스의 메소드는 동일한 이름과 매개변수를 갖습니다. 단, 리턴 타입의 경우, 서브 클래스의 메소드는 슈퍼 클래스의 메소드 리턴 타입의 서브 타입을 리턴할 수 있습니다.

예시

다음 예제 슈퍼 클래스에 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