目录
定义一个接口,在语法中与定义一个抽象类是没有区别的,但是不允许 提供接口中任意成员的实现方式,一般接口只会包含方法 、索引器和事件的声明, 不允许声明成员的修饰符 , public都不行 。因为接口总是共有的 ,也不能声明虚拟和静态。
接口不会有构造函数 也不能有数据字段
接口不能被实例化
使用接口案例
定义接口 IFiy
cs//interface 定义接口的关键字 internal interface IFiy { //定义没有实现的方法 //飞 可以有参数 void Fly(); //攻击 void Attack(); }
定义一个Plane飞机类继承 IFiy接口
csinternal class Plane : IFiy { public void Attack() { Console.WriteLine("飞机在空中战斗"); } public void Fly() { Console.WriteLine("飞机在空中飞"); } }
定义一个 Brid鸟类继承 IFiy接口,接口可以被多个类继承
csinternal class Brid : IFiy { public void Fly() { Console.WriteLine("小鸟在空中飞"); } public void Attack() { Console.WriteLine("小鸟在空中捕猎"); } }
主函数
csstatic void Main(string[] args) { // 接口不会有构造函数 也不能有数据字段 Plane plane = new Plane(); plane.Fly(); //接口不能被实例化; //使用接口的具体操作 IFiy fiy; fiy = new Plane(); fiy.Fly();// 飞机的飞 fiy = new Brid(); fiy.Fly();//小鸟的飞 //使用接口创建一个变量 写了两个构造 这在编程中叫做多态 //因为fiy发生了变化 之前是飞机 后面变成了小鸟 所以他的形态是可以变化的 这种语法在C#中叫做 多态 }
接口继承
接口与接口之间的继承
csinternal interface Interface1 { void YY(); }
csinternal interface Interface2 { void cy(); }
cs//接口与接口之间的继承 internal interface Interface3 : Interface1 , Interface2 { void Show(); }
cs//接口Interface3中含有三种方法,一个自己的两个继承的 internal class Class1 : Interface3 { public void cy() { throw new NotImplementedException(); } public void Show() { throw new NotImplementedException(); } public void YY() { throw new NotImplementedException(); } }
cs//定义一个抽象类模板 internal abstract class Student { public int Id { get; set; } public string Name { get; set; } public string Addres { get; set; } public string Phone { get; set; } public int Age { get; set; } }
cs// ,Interface1 接口继承 //在继承中 除了第一个要继承的类或则是接口使用: 后面再继承的接口要使用逗号隔开 // 类是不允许多继承的 每个类只能有一个基类 internal class Yse : Student, Interface1 , Interface2 { public Yse(string name) { Name = name; } public void YY() { Console.WriteLine($"{Name}是会游泳的学生"); } public void cy() { Console.WriteLine($"{Name}会唱歌"); } }
csinternal class No : Student , Interface2 { public void cy() { Console.WriteLine($"{Name}会跳舞"); } }
csstatic void Main(string[] args) { Yse y = new Yse("张三"); y.Name = "张三"; y.YY(); y.cy(); Interface1 i; i = new Yse("张三"); i.YY(); // 接口的多态 Interface1 i1; i1 = new Yse("李四"); i1.YY(); }
练习
定义一个接口用来做数学运算 既可以做加法也可以做减法 通过具体的数学操作类(加法类 减法类)去实现接口中的方法 完成操作 提示:运用接口的多态性
主函数
csinternal class Program { static void Main(string[] args) { Math m; m = new Add(); Console.WriteLine(m.Maths(10,20)); // 30 加法 m = new Sub(); Console.WriteLine(m.Maths(10,20)); // -10 减法 } }
创建一个Math接口
csinternal interface Math { double Maths(double a , double b); }
加法类
csinternal class Add :Math { public double Maths(double a,double b) { return a + b; } }
减法类
csinternal class Sub : Math { public double Maths(double a, double b) { return a - b; } }