//接口示例
class Program
{
static void Main(string[] args)
{
S s = new S();
s.Fun();
s.Method();
s.Run();
s.Start();
}
}
interface IFA
{
void Fun();//接口中的方法默认都为public;但不能显示使用public
}
interface IFB : IFA //子接口IFB继承了父接口IFA
{
void Method();//子接口中又添加了新的方法
}
interface INC
{
void Start();
}
class F
{
public virtual void Run()
{
Console.WriteLine("Run() in F!");
}
}
class S : F, IFB, INC //子类S在继承父类的同时又实现了另外两个接口
{
public override void Run()
{
Console.WriteLine("Run() in S!");
}
//继承接口,必须描述接口所有的方法。接口定义了一个个的空方法,这些方法需要继承它的类挨个实现。接口什么实现都没有,不用重写,不需要使用override关键字
public void Fun()
{
Console.WriteLine("Fun() in S!");
}
public void Method()
{
Console.WriteLine("Method() in S!");
}
public void Start()
{
Console.WriteLine("Start() in S!");
}
}
abstract class T : IFB
{
//在T中未实现接口IFB中的所有方法;因此它是一个抽象类
public void Method()
{
Console.WriteLine("Method() in S!");
}
public abstract void Fun();
}
注意:接口中只能包含方法、属性、索引器和事件的声明。不允许声明成员上的修饰符,即使是pubilc都不行,因为接口成员总是公有的,也不能声明为虚拟和静态的。如果需要修饰符,最好让实现类来声明。
接口就是抽象类和虚方法的杂种!
个人理解: C#是单继承,接口是解决C#中 类不能同时继承多个基类的解决方法。