基本语法:
[public] interface 接口名称
{
接口成员;
}
官方定义:接口是指定一组函数成员而不实现成员的引用类型,其他类型-类和结构可以实现接口。
举个例子:
我们需要定义两个类——企鹅类和麻雀类 他们都有共通的特点 ,吃喝睡。这时候利用多态的思想我们可以
定义一个父类 :鸟类。
/// <summary>
/// 抽象类 鸟类
/// </summary>
public abstract class Bird
{
public abstract void Eat(); //定义三个抽象方法 吃喝睡
public abstract void Sleep();
public abstract void Drink();
}
但是麻雀会飞,企鹅会游泳 父类中并不能把飞和游泳两种方法都加入进去,因为并不是所有鸟类都会飞,会游泳,这时候就需要用到接口来实现这两个独有的方法。
/// <summary>
/// 游泳接口 实现游泳功能
/// </summary>
public interface ISwim
{
void Swim();
}
/// <summary>
/// 飞翔接口 实现飞行功能
/// </summary>
public interface IFly
{
void Fly();
}
让麻雀和企鹅继承鸟类和接口:
public class Sparrow : Bird,ISwim //继承游泳接口 实现相对于麻雀独有的游泳功能
{
public override void Drink()
{
Console.WriteLine( "我会喝水");
}
public override void Eat()
{
Console.WriteLine("我能吃饭");
}
public override void Sleep()
{
Console.WriteLine("我要睡觉");
}
public void Swim()
{
Console.WriteLine("我会游泳啦");
}
}
public class Penguin : Bird ,IFly //继承了飞翔接口 实现相对于企鹅独有的飞行功能
{
public override void Drink()
{
Console.WriteLine("我会喝水");
}
public override void Eat()
{
Console.WriteLine("我能吃饭");
}
public void Fly()
{
Console.WriteLine( "我能飞啦");
}
public override void Sleep()
{
Console.WriteLine("我要睡觉");
}
}
我们发现企鹅还能捕鱼功能,这时候我们就可以定义一个捕鱼接口,让企鹅类继承这个接口,实现捕鱼功能。
(一个子类只能继承一个父类,但是能继承多个接口)
还有一些需要注意的是:
1 )接口一般表示一种规范,同时也表示一种能力,继承了这个接口也就表示了有了这个能力。所有在给接口取名的时候一般以I开头。
2)接口中的成员不能有任何实现
3)接口中成员不能加访问修饰符,接口成员默认的修饰符为public
4)为了多态,接口不能被实例化,也就是说不能被new
5)接口中只能有方法,索引器,事件,不能有“字段”和构造函数
6)接口与接口之间可以继承 且可以多继承
7 ) 接口只能继承接口,而类可以同时继承接口和类
8)实现接口的子类必须实现接口的全部成员。
9)当一个抽象类继承一个接口,需要子类调用方法。