接口(Interface)
接口是把隐式公共方法和属性结合起来,以封装一个特定功能的集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同。但不允许提供接口中任何成员的执行方式。一个类可以支持多个接口,多个类也可以支持相同的接口。
不同的是:
1、接口不能实例化,不能有构造方法和字段;
2、不能有修饰符,比如 public、private 等;
3、不能声明虚拟的或静态的等。
4、实现接口的类就必须实现接口中的所有方法和属性;

1 interface IChange 2 { 3 string ChangeThing(string thing); 4 }
机器猫继承于猫,并实现 IChange 接口。实现接口的方法,注意不能加 override 修饰符。
1 class MachineCat : Cat, IChange 2 { 3 public MachineCat() : base() 4 { } 5 6 public MachineCat(string name) : base(name) 7 { } 8 9 public string ChangeThing(string thing) 10 { 11 return base.Shout() + "变出" + thing; 12 } 13 }
客户端
1 private void button6_Click(object sender, EventArgs e) 2 { 3 MachineCat mcat = new MachineCat("叮当"); 4 StoneMonkey wukong = new StoneMonkey("孙悟空"); 5 6 // 声明一个接口数组,将两个类实例复制给数组 7 IChange[] array = new IChange[2]; 8 array[0] = mcat; 9 array[1] = wukong; 10 11 // 利用多态性,实现不同的 ChangeThing 12 MessageBox.Show(array[0].ChangeThing("东西")); 13 MessageBox.Show(array[1].ChangeThing("东西")); 14 }
抽象类和接口的区别:
1、抽象类可以给出一些成员的实现,接口却不包含成员的实现;
2、抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现;
3、一个类只能继承一个抽象类,但可实现多个接口;
4、类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象;
5、如果行为要跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类;
6、从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。
7、抽象类是自底而上抽象出来的,而接口是自顶向下设计出来的。

浙公网安备 33010602011771号