Karena penasaran, apakah ada bahasa yang memungkinkan Anda melakukan set aritmatika pada jenis untuk membuat jenis baru? Sesuatu seperti:
interface A {
void a();
void b();
}
interface B {
void b();
void c();
}
interface C = A & B; // has b()
interface D = A | B; // has a(), b() and c()
interface E = (A & B) ^ B; // has c()
Saya tahu bahwa dalam beberapa bahasa ide-ide ini dapat diekspresikan (yaitu, Java memiliki List<Comparable & Serializable>untuk penyatuan antarmuka) tetapi saya belum pernah mendengar bahasa yang mendukung tipe aritmatika. Terima kasih!
CanWriteAndCompare extends Serializable, Comparable {}) dan saya sedang memikirkan cara menggeneralisasi ini.
Aatau dua B, dengan dua implementasi yang terlihat persis sama. Dalam metode ini saya memanggil metode polimorfik yang dapat mengambil Aatau B, jadi implementasinya sama, tetapi karena saya harus mengambil dua tipe yang berbeda, saya perlu dua implementasi. Ini akan lebih mudah jika saya bisa melakukannya myMethod(A | B aOrB).
Oroperasi dapat ditiru oleh banyak pewarisan.