Mudah memahami kovarians dan kontravarians
Dalam pengaturcaraan berorientasikan objek, kovarians dan kontravarian menerangkan hubungan antara kelas asas dan kelas terbitan Mereka menentukan cara kelas terbitan dianggap sebagai kelas asasnya sambil memastikan keselamatan jenis.
Kovarian:
Kovarian membenarkan menggantikan jenis primitif dalam API yang digunakan hanya sebagai output (cth. nilai pulangan) dengan jenis "lebih besar" (kurang khusus). Ini bermakna senarai kelas terbitan boleh dianggap sebagai senarai kelas asas. Contohnya:
<code>List<水果> 水果列表 = new List<香蕉>(); // 协变</code>
Berbual:
Contravariance membenarkan menggantikan jenis primitif dalam API yang digunakan hanya sebagai input (cth., parameter kaedah) dengan jenis "lebih kecil" (lebih khusus). Ini bermakna bahawa parameter jenis kelas asas boleh diluluskan sebagai parameter jenis kelas terbitan. Contohnya:
<code>基类 执行操作(派生类 变量); // 逆变</code>
Syarat input/output:
Dalam konteks generik, "masuk" dan "keluar" digunakan untuk menunjukkan sama ada jenis generik digunakan sebagai parameter input atau nilai pulangan.
Contoh antara muka dan generik:
<code>// 输出 interface IMyInterface<out T> { T MyFunction(); } // 输入 interface IMyInterface<in T> { void MyFunction(T variable); }</code>
Atas ialah kandungan terperinci Kovarians dan Kontravarian dalam Pengaturcaraan: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!