C# 接口
接口
在 C# 中实现抽象的另一种方法是使用接口。
接口是一个完全抽象类,它只能包含抽象方法和属性(具有空体):
实例
// 接口
interface Animal
{
void animalSound(); // 接口方法(没有主体)
void run(); // 接口方法(没有主体)
}
在接口的开头用字母"I"开头被认为是一种好的做法,因为这样可以使您和其他人更容易记住它是一个接口而不是一个类。
默认情况下,接口的成员是抽象的abstract
和公共的public
。
注释: 接口可以包含属性和方法,但不能包含字段。
要访问接口方法,接口必须由另一个类实现(类似于继承)。要实现接口,请使用:
符号(与继承一样)。接口方法的主体由"implement"类提供。
注意,在实现接口时,不必使用override
关键字:
实例
// 接口
interface IAnimal
{
void animalSound(); // 接口方法(没有主体)
}
// Pig "实现"了 IAnimal 接口
class Pig : IAnimal
{
public void animalSound()
{
// 这里提供了 animalSound() 的主体
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // 创建 Pig 对象
myPig.animalSound();
}
}
接口说明:
- 与抽象类一样,接口不能用于创建对象(在上面的示例中,不可能在Program类中创建"IAnimal"对象)
- 接口方法没有主体-主体由"implement"类提供
- 在实现接口时,必须重写其所有方法
- 接口可以包含属性和方法,但不能包含字段/变量
- 默认情况下,接口成员是抽象的
abstract
和公共的public
- 接口不能包含构造函数(因为它不能用于创建对象)
为什么以及何时使用接口?
1) 为了实现安全性-隐藏某些细节,只显示对象(接口)的重要细节。
2) C#不支持多重继承(一个类只能从一个基类继承)。但是,它可以通过接口实现,因为类可以实现多个接口。注释:要实现多个接口,请用逗号分隔它们(参见下面的示例)。
多个接口
要实现多个接口,请用逗号分隔它们:
实例
interface IFirstInterface
{
void myMethod(); // 接口方法
}
interface ISecondInterface
{
void myOtherMethod(); // 接口方法
}
// 实现多个接口
class DemoClass : IFirstInterface, ISecondInterface
{
public void myMethod()
{
Console.WriteLine("Some text..");
}
public void myOtherMethod()
{
Console.WriteLine("Some other text...");
}
}
class Program
{
static void Main(string[] args)
{
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}