なぜC#はこのように設計されたのですか?
私が理解しているように、インターフェースは動作を説明するだけであり、特定の動作が実装されているインターフェースを実装するクラスの契約上の義務を説明する目的を果たします。
クラスがその振る舞いを共有メソッドに実装したいのであれば、なぜそうすべきではないのでしょうか?
これが私が考えていることの例です:
// 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()
(C#7構文を使用)は、静的メソッドを呼び出すことによって明示的にインターフェイスメソッドを実装します。ただし、継承を追加すると、状況は醜くなります(インターフェースを再実装する必要があります)