Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

covariant return types ใน Java คืออะไร?


โดยทั่วไป ในการแทนที่ เมธอดในซูเปอร์คลาสและคลาสย่อยมีชื่อและพารามิเตอร์เหมือนกัน แต่เมื่อพูดถึงประเภทการส่งคืน เมธอดในคลาสย่อยสามารถส่งคืนประเภทย่อยของประเภทการส่งคืนของเมธอดในซูเปอร์คลาสได้

ตัวอย่าง

หากคุณสังเกตตัวอย่าง super class ต่อไปนี้มีเมธอดชื่อ demoMethod() และจะส่งกลับค่าของรายการประเภท หากเราแทนที่เมธอดนี้ เมธอดในคลาสย่อยสามารถคืนค่าประเภท List (ซึ่งอยู่ในซูเปอร์คลาส) หรือยังสามารถส่งคืน ประเภทย่อยของรายการ (ประเภทการส่งคืนของเมธอดใน super class) เช่น ArrayList, Stack, Vector เป็นต้น

ในสถานการณ์สมมตินี้ เมธอด sub class จะคืนค่า ArrayList ซึ่งเป็นชนิดย่อยของประเภทการส่งคืนของ super class เช่น List ประเภทย่อยนี้ (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