Tại sao C # được thiết kế theo cách này?
Theo tôi hiểu, một giao diện chỉ mô tả hành vi và phục vụ mục đích mô tả nghĩa vụ theo hợp đồng đối với các lớp thực hiện giao diện mà hành vi nhất định được thực hiện.
Nếu các lớp muốn thực hiện hành vi đó theo một phương thức được chia sẻ, tại sao chúng không nên?
Đây là một ví dụ về những gì tôi có trong tâm trí:
// 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()
(sử dụng cú pháp C # 7) sẽ thực hiện phương thức giao diện một cách rõ ràng bằng cách gọi phương thức tĩnh. Tuy nhiên, mọi thứ trở nên tồi tệ khi bạn thêm tính kế thừa vào đó (bạn phải thực hiện lại giao diện)