如果将方法看成一种行为,那么接口就是一种能力
那么我们关于接口的一些知识点都有哪些?
接口的定义:interface关键字,接口中可以有属性、方法(未实现,接口中的方法有个名称和返回值就可以,不需要方法体)
接口的能·名称通常以”I”开头,如IList(这个不是规定,但是是个规范)
如果一个类即继承了类,又实现了接口,那么类必须写在前面,中间用逗
号隔开
一个类只能继承一个父类,但是可以实现多个接口
如:classStudent:Person,IFly,ISwim
Student类继承自Person类,实现了IFly和ISwim接口
[访问修饰符]interface 接口名
{
//接口成员定义
}
例如:interfaceIFly
{
void Fly();
}
接口和类有什么异同
不同点:
不能直接实例化接口
接口不包含方法的实现
接口可以多继承(实现),类只能单继承
类定义可在不同的源文件之间进行拆分
相同点:
接口、类和结构都可以从多个接口继承
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有 成员
接口和类都可以包含事件、索引器、方法和属性
C#支持多重继承吗?
类之间不支持,接口之间支持。类对接口叫做实现,不叫继承
类是爹,接口是能力,能有多个能力,但不能有多个爹
上面说了这么多,那么到底是如何在类中实现接口的呢?
定义一个Person类,类中只有一个方法Show();然后添加关键字virtual让Show()方法变成虚方法
classPerson
{
publicvirtual void Show()
{
Console.WriteLine("我是人");
}
}
然后定义两个接口:IFly和ISwim,实现会飞和会游泳的能力
interfaceIFly
{
void Fly();
}
interfaceISwim
{
void Swim();
}
然后声明一个Student类,继承自Person类,实现IFly和ISwim接口
//要实现的接口必须写在继承的类的后面
classStudent:Person,IFly,ISwim
{
//重写了父类中的Show()方法
publicoverride void Show()
{
Console.WriteLine("我是学生");
}
//实现了IFly接口中的Fly()方法
publicvoid Fly()
{
Console.WriteLine("我同时会飞");
}
//实现了ISwim接口中的Swim()方法
publicvoid Swim()
{
Console.WriteLine("我还会游泳");
}
}
那么接下来我们就可以在Main()方法中实例化Student类,看看有没有实现接口。
Student stu = new Student();
stu.Show();
stu.Fly();
stu.Swim();
Console.ReadKey();
这是Main()方法中的代码,然后输出的结果为:
当然了,再次需要提醒的是:
不能直接实例化接口
接口不包含方法的实现
接口可以多继承(实现),类只能单继承
C#中类不支持多继承