接口的实现与继承
- 实现过程必须在实现接口的类中完成 - 接口可以多次继承 namespace winApp { interface Interface3 : Interface1, Interface2 { } } - 不同的接口(不包含【派生)中允许有同名的成员 - 同一接口中成员,即使类型不同,也不能重名 namespace winApp { interface Interface3 : Interface1, Interface2 { } } namespace winApp { class Eagle : Bird, IFlyable { public void Fly() { Console.WriteLine("我是老鹰,我会飞"); } } } // 接口要在主函数中实现 namespace winApp { class Program { static void Main(string[] args) { IFlyable[] flys = { new Sparrow(), new Eagle(), new Swan()}; foreach (IFlyable outFly in flys) outFly.Fly(); Console.ReadKey(); } } }显式实现接口 与 隐式实现接口
- 显式实现接口 - 只能通过接口来调用 , 具体类不行 namespace winApp { class Balloon : IFlyable1, IFlyable2 { //返回值类型 接口名称 接口方法 void IFlyable1.Fly() { Console.WriteLine("我是1中的飞"); } void IFlyable2.Fly(){ Console.WriteLine("我是2中的飞"); } } } // IFlyable2 方法同 IFlyable namespace winApp { interface IFlyable1 { void Fly(); } } // 最后在主函数中引用 namespace winApp { class Program { static void Main(string[] args) { IFlyable1 myBalloon1 = new Balloon(); myBalloon1.Fly(); IFlyable2 myBalloon2 = new Balloon(); myBalloon2.Fly(); Console.ReadKey(); } } } - 隐式实现接口 - 可以通过接口调用方法,也可以通过具体类调用 namespace winApp { class Program { static void Main(string[] args) { // 隐式地实现接口 // 隐式1 接口调用 IFlyable1 myEagle1 = new Eagle(); myEagle1.Fly(); // 隐式2 具体类调用 Eagle myEagle2 = new Eagle(); myEagle2.Fly(); Console.ReadKey(); } } }