目錄
使用接口案例
接口繼承
練習
定義一個接口,在語法中與定義一個抽象類是沒有區別的,但是不允許提供接口中任意成員的實現方式,一般接口只會包含方法 、索引器和事件的聲明,?不允許聲明成員的修飾符,?public都不行 。因為接口總是共有的 ,也不能聲明虛擬和靜態。?
接口不會有構造函數 ?也不能有數據字段
接口不能被實例化
使用接口案例
定義接口? IFiy
//interface 定義接口的關鍵字 internal interface IFiy {//定義沒有實現的方法//飛 可以有參數void Fly();//攻擊void Attack();}
定義一個Plane飛機類繼承 IFiy接口
internal class Plane : IFiy {public void Attack(){Console.WriteLine("飛機在空中戰斗");}public void Fly(){Console.WriteLine("飛機在空中飛");} }
定義一個?Brid鳥類繼承 IFiy接口,接口可以被多個類繼承
internal class Brid : IFiy {public void Fly(){Console.WriteLine("小鳥在空中飛");}public void Attack(){Console.WriteLine("小鳥在空中捕獵");} }
主函數
static void Main(string[] args) {// 接口不會有構造函數 也不能有數據字段Plane plane = new Plane();plane.Fly();//接口不能被實例化;//使用接口的具體操作IFiy fiy;fiy = new Plane();fiy.Fly();// 飛機的飛fiy = new Brid();fiy.Fly();//小鳥的飛//使用接口創建一個變量 寫了兩個構造 這在編程中叫做多態 //因為fiy發生了變化 之前是飛機 后面變成了小鳥 所以他的形態是可以變化的 這種語法在C#中叫做 多態 }
接口繼承
接口與接口之間的繼承
internal interface Interface1 {void YY(); }
internal interface Interface2 {void cy(); }
//接口與接口之間的繼承 internal interface Interface3 : Interface1 , Interface2 {void Show(); }
//接口Interface3中含有三種方法,一個自己的兩個繼承的 internal class Class1 : Interface3{public void cy(){throw new NotImplementedException();}public void Show(){throw new NotImplementedException();}public void YY(){throw new NotImplementedException();}}
//定義一個抽象類模板 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; } }
// ,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}會唱歌");}}
internal class No : Student , Interface2 {public void cy(){Console.WriteLine($"{Name}會跳舞");} }
static 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();}
練習
定義一個接口用來做數學運算 既可以做加法也可以做減法 ?通過具體的數學操作類(加法類 減法類)去實現接口中的方法 完成操作 ?提示:運用接口的多態性
主函數
internal 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接口
internal interface Math {double Maths(double a , double b);}
加法類
internal class Add :Math {public double Maths(double a,double b){return a + b;} }
減法類
internal class Sub : Math {public double Maths(double a, double b){return a - b;} }