public interface ICustomer { void SomeMethod();//接口的所有成员都暗自成为abstract,我们不能为它提供缺省实现,无论这份实现是 多么平淡无奇;接口的成员也都暗自成为public,我们不能以关键字abstract或 public来修改(修饰)其中某个成员。 }
2.如果是"实现接口",那么代码大致如下
public class Customer:ICustomer {
#region ICustomer 成员
public void SomeMethod() { throw new NotImplementedException(); }
#endregion }
3.如果是"显式实现接口",那么代码大致如下
public class Customer:ICustomer {
#region ICustomer 成员
void ICustomer.SomeMethod()//显示接口成员的访问级别暗中是public,不允许程序员再加任何修饰符 { throw new NotImplementedException(); }
#endregion }
大家看到差别了吧?显式实现的方式,那些方法都会加上一个前缀的。但是,这到底意味着什么呢?
如果是实现接口
public class DAL { /// <summary> /// 如果我们是直接实现接口的话,那么既可以用接口调用方法,也可以用具体类调用方法 /// </summary> public void GetCustomer() { Customer customer = new Customer(); customer.SomeMethod(); }
public void GetCustomer2() { ICustomer customer = new Customer(); customer.SomeMethod(); } }
如果是显式实现接口
public class DAL { /// <summary> /// 如果我们是显式实现接口的话,那么要访问里面的方法就只能是通过接口来调用,而不能通过具体类来做 /// </summary> public void GetCustomer() { ICustomer customer = new Customer(); customer.SomeMethod(); } }