C# 界面
接口
另一种实现方式 抽象 在 C# 中,带有接口。
一个 interface
完全是“抽象类",它只能包含抽象方法和属性(具有空体):
例子
// interface
interface Animal
{
void animalSound(); // interface method (does not have a body)
void run(); // interface method (does not have a body)
}
在接口的开头以字母“I”开头被认为是一种很好的做法,因为它可以让你自己和其他人更容易记住它是一个接口而不是一个类。
默认情况下,接口的成员是 abstract
和public
.
笔记: 接口可以包含属性和方法,但不能包含字段。
要访问接口方法,该接口必须由另一个类“实现”(有点像继承)。要实现接口,请使用 :
符号(就像继承一样)。接口方法的主体由“实现”类提供。请注意,您不必使用override
实现接口时的关键字:
例子
// Interface
interface IAnimal
{
void animalSound(); // interface method (does not have a body)
}
// Pig "implements" the IAnimal interface
class Pig : IAnimal
{
public void animalSound()
{
// The body of animalSound() is provided here
Console.WriteLine("The pig says: wee wee");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
}
}
接口说明:
- 喜欢 抽象类、接口 不能 用于创建对象(在上面的例子中,不可能在 Program 类中创建“IAnimal”对象)
- 接口方法没有主体——主体由“实现”类提供
- 在实现接口时,必须重写其所有方法
- 接口可以包含属性和方法,但不能包含字段/变量
- 接口成员默认
abstract
和public
- 接口不能包含构造函数(因为它不能用于创建对象)
为什么以及何时使用接口?
1)实现安全性——隐藏某些细节,只显示对象(界面)的重要细节。
2)C# 不支持“多重继承”(一个类只能继承一个基类)。但是,可以使用接口来实现,因为类可以 实施 多个接口。
笔记: 要实现多个接口,请用逗号分隔它们(参见下面的示例)。