深入了解接口的使用
首先我们要了解我们为什么要实现接口?
第一:因为子类只有一个直接父类,即子类只能继承一个父类 为了能让子类实现多个方法模型,所有微软引入了接口的用法 一个类可以实现多接口
第二:提高了程序的扩展性和降低系统间的耦合性
第三:可以规定方法的形式 和 规范
定义接口的方法如下:
namespace 接口简单实现多态 { //定义接口的方法 把Class关键字换成 interface 关键字 public interface IFly { //接口中定义方法的注意点 //01 方法不能有方法体(也就是不能实现) //02 C#中方法不能有修饰符修饰 (微软系统内部会自动增加一个public 修饰符) //03 C#接口中只能定义方法而不能定义字段 (Java可以定义字段,但是必须是静态常量字段) void Say(); } }
如何实现接口?
namespace 接口简单实现多态 { //定义一个普通类 鸟类 实现 IFly接口 public class Bird:IFly { //注意 !! //必须实现该接口的所有方法 public void Say() { Console.WriteLine("我是鸟,我会飞!"); } } }
namespace 接口简单实现多态 { //定义一个飞机类 实现 IFly接口 public class Prin:IFly { public void Say() { Console.WriteLine("我是飞机"); } } }
使用接口来实现多态
namespace 接口简单实现多态 { class Program { static void Main(string[] args) { //定义一个接口类型的数组 用来保存 实现该接口的 类 可以理解为里氏替换原则 父类变量指向子类对象只不过这里换成了接口 IFly[] ifly = { new Bird(), new Prin() }; //遍历数组 foreach (IFly items in ifly) { //输出接口中的方法 会自动调用该子类的方法 items.Say(); } Console.ReadKey(); } } }
使用接口实现多继承(即一个接口继承另一个或多个接口)
namespace 深入了解接口 { //定义一个IEat接口 public interface IEat { void Eat(); } }
namespace 深入了解接口 { //接口继承接口 public interface IFly:IEat { void fly(); } }
namespace 深入了解接口 { //鸟可以实现多个接口 public class Bird:IFly { public void fly() { Console.WriteLine("我能飞!"); } public void Eat() { Console.WriteLine("我能吃"); } } }
namespace 深入了解接口 { class Program { static void Main(string[] args) { IFly fly = new Bird(); fly.Eat(); fly.fly(); Console.ReadKey(); } } }
namespace 接口简单实现多态
{ //定义一个飞机类 实现 IFly接口 public class Prin:IFly { public void Say() { Console.WriteLine("我是飞机"); } } }