这是我写的日记,您可以看下。
接口表示一组函数成员,但不实现这些函数成员(实现代码块用分号代替)。类和结构可以实现接口
接口的声明方式如下:
interface IMyIf { void Print();}
1不可为接口中的成员添加修饰符,接口中的成员的修饰符默认是public。其实这也是有道理的,因为接口中的成员就是被用来实现的。倘若不是共有的,又想在某些地方实现接口中的成员就会受到保护级别的限制。
2接口中的成员可以是:属性,方法,索引,事件。但不可以是字段。
3要想实现接口,必须在基类列表中列出接口名,必须实现接口中的每一个成员。
4按照惯例接口名首字母应该是大写的I。
5一个接口可以继承另一个接口。这时子接口就有了所有父接口的成员。
6一个接口可以继承多个接口的同时继承一个类。在基类列表中基类必须写在第一位。
让我们来看几个例子吧
class Program
{
static void Main(string[] args)
{
IMyIf m = new Chinese(); //把类对象的引用转化为接口类型来获取指向接口的引用
m.Print();
IShow s = new Chinese();
s.Show();
Console.ReadKey();
}
}
interface IMyIf //接口名首字母为大写的I
{ void Print();} //该方法的默认修饰符为public,不可以人为修改
interface IShow
{ void Show();}
class Person {
public void Swimming()
{ Console.WriteLine("person can swimming");}
}
class Chinese : Person, IMyIf, IShow //基类列表中把基类写在最前面
{ //为每个接口中的每个成员提供实现代码
public void Print() { Console.WriteLine("从接口IMyIf中继承来的"); }
public void Show() { Console.WriteLine("从接口IShow中继承而来的"); }
}
当类继承的多个接口中的成员都有相同的返回值,函数名,参数。类可以只实现一个成员。如下代码是正确的
interface IIfc1 { void Print();}
interface IIfc2 { void Print();}
class MyClass : IIfc1, IIfc2
{
public void Print() { Console.WriteLine("共同的实现"); }
}
如果非要给每个接口中的成员有一个实现可以用显示接口;如下类所示
interface IIfc1 { void Print();}
interface IIfc2 { void Print();}
class MyClass : IIfc1, IIfc2
{
void IIfc1.Print() { Console.WriteLine("IIfc1接口的实现"); }
void IIfc2.Print() { Console.WriteLine("IIfc2接口的实现"); }
}
当然实现接口的类还可以从它的基类继承实现的代码,如下所示
interface IShow { void Print();}
class Person
{ public void Print()
{ Console.WriteLine("通过Person类中的方法而实现"); }
}
class Student : Person, IShow
{ } |