Mengapa C # dirancang seperti ini?
Seperti yang saya pahami, antarmuka hanya menggambarkan perilaku, dan melayani tujuan menggambarkan kewajiban kontrak untuk kelas yang mengimplementasikan antarmuka yang perilaku tertentu diimplementasikan.
Jika kelas ingin mengimplementasikan perilaku itu dalam metode bersama, mengapa tidak?
Ini adalah contoh dari apa yang ada dalam pikiran saya:
// These items will be displayed in a list on the screen.
public interface IListItem {
string ScreenName();
...
}
public class Animal: IListItem {
// All animals will be called "Animal".
public static string ScreenName() {
return "Animal";
}
....
}
public class Person: IListItem {
private string name;
// All persons will be called by their individual names.
public string ScreenName() {
return name;
}
....
}
IListItem.ScreenName() => ScreenName()
(menggunakan sintaks C # 7) akan mengimplementasikan metode antarmuka secara eksplisit dengan memanggil metode statis. Hal-hal menjadi jelek ketika Anda menambahkan warisan untuk itu, meskipun (Anda harus mengimplementasikan ulang antarmuka)