接口
- 接口的定义与实现
- 隐式实现,显示实现的区别
- 哪些东西可以被继承
- 接口中有哪些成员
namespace 接口
{
class Program
{
static void Main(string[] args)
{
}
}
class Bird
{
}
class Transport
{
}
class Mahjong : Bird
{
}
//如果一个类继承了别的类又继承了接口,那么基类必须写在所有的接口之前
//如果一个类继承了某个接口,那么必须将接口中的所有的成员全部实现一遍(把函数都写出来)
//隐式实现接口的话,对应的函数前必须加上public,如果使用快速实现(alt + enter)的话会自动加上public
//显示实现接口的话,对应函数前就不能加任何访问权限修饰符
//那些东西可以被继承
//类,接口
//类可以继承于类或接口,结构体只能实现接口
//接口可以集成另一个接口,在类继承该接口时,也同样要实现出所有继承链上的抽象函数
//一个类实现了某个接口 == 一个类继承了某个借口
//接口中可以有哪些成员
//1、函数的声明
//2、属性的声明(只能比声明的访问器写的多,不能比声明的访问器写得少)
//3、索引器的声明
//4、事件的声明
struct Car : IFly
{
public int Num { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public void Fly()
{
throw new NotImplementedException();
}
public void Run()
{
throw new NotImplementedException();
}
}
class Plane : Transport, IFly, ISuperFly
{
int IFly.Num { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
//public void Fly()
//{
//}
void IFly.Run()
{
throw new NotImplementedException();
}
void ISuperFly.Fly()
{
throw new NotImplementedException();
}
}
//接口无法直接被实例化
//在c#代码中,定义接口,接口名的首字符为大写字母I,用于表示这是一个接口
//在接口中只能够存在行为,且是一种高度抽象的行为(不用实现的方法或者函数称为高度抽象的-行为)
interface IFly : ISuperFly
{
//函数的声明(没有具体去写函数的函数体)
//只声明没有具体的函数体的函数,我们称为抽象函数
//在接口中,函数的声明前不能加任何的访问权限修饰符
void Run();
//属性的声明
int Num { get; set; }
}
interface ISuperFly
{
void Fly();
}
}
注意:
1.在c#代码中,定义接口,接口名的首字符为大写字母I,用于表示这是一个接口