菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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”开头定义接口,这是一个良好的实践,这样你自己和他人更容易记住它是一个接口而不是一个类。

默认情况下,接口的成员是 abstractpublic 的。

注意: 接口可以包含属性和方法,但不能包含字段。

要访问接口方法,接口必须被另一个类“实现”(类似于继承)。要实现一个接口,请使用 : 符号(就像继承一样)。接口方法的实现体由“实现”类提供。请注意,在实现接口时,您不必使用 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" 对象)。
  • 接口方法没有实体,实体由“实现”类提供。
  • 在实现一个接口时,你必须覆盖它的所有方法
  • 接口可以包含属性和方法,但不能包含字段/变量。
  • 接口成员默认是 abstractpublic 的。
  • 接口不能包含构造函数(因为它不能用于创建对象)

为何以及何时使用接口?

1) 实现安全性 - 隐藏某些细节,只显示对象的(接口的)重要细节。

2) C# 不支持“多重继承”(一个类只能继承自一个基类)。然而,这可以通过接口来实现,因为一个类可以实现多个接口。注意: 要实现多个接口,请用逗号将它们分开(请参阅下面的示例)。


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持