C#显示接口实现和隐式接口实现
在项目中可能会遇到显示接口实现和隐式接口实现。什么意思呢?简单来说使用接口名作为方法名的前缀,这称为“显式接口实现”;传统的实现方式,称为“隐式接口实现”。隐式接口实现如下:
interface ISkill { void Flying(); }
//隐式实现ISkill接口 public class Bird: ISkill { public void Flying() { }
}
我们在隐式实现接口下可以这样调用:
1 //第一种调用方式 2 Bird bird = new Bird(); 3 bird.Flying(); 4 5 //第二种调用方式 6 ISkill secondBrid = new Bird(); 7 secondBrid.Flying();
直接用类和接口都可以调用Flying方法。
显示接口实现如下:
interface ISkill { void Flying(); } public class Bird : ISkill { //方法名称为接口名.方法名 void ISkill.Flying() { } }
此时的调用只能用接口调用,如下:
ISkill secondBrid = new Bird(); secondBrid.Flying();
不能通过类来调用:
Bird bird = new Bird(); bird.Flying();
总结:
- 当类实现一个接口时,通常使用隐式接口实现,这样可以方便的访问接口方法和类自身具有的方法和属性。
- 当类实现多个接口时,并且接口中包含相同的方法签名,此时使用显式接口实现。即使没有相同的方法签名,仍推荐使用显式接口,因为可以标识出哪个方法属于哪个接口。
- 隐式接口实现,类和接口都可访问接口中方法。显式接口实现,只能通过接口访问。