当我们需要定义一个规范或者一个协议,描述某个对象应该具有哪些能力时,可以使用接口。接口可以看做是一种特殊的抽象类,它没有任何实现,只用于描述对象应该有哪些能力。具体来说,一个接口是由一组抽象方法、属性、索引器和事件组成的。可以将接口看做一种契约,实现接口的类型需要履行这个契约,提供指定的能力。
以下是实现接口的基本语法:
[public | internal] class ClassName : IInterface1, IInterface2
{
// 实现接口的内容
}
其中IInterface1
和IInterface2
是需要实现的接口名称。需要注意的是,C#支持一个类实现多个接口,这是一种很好的代码重用方式。
以下示例是定义一个简单的接口ICalculate
,其中包含两个方法double Add(double a, double b)
和double Subtract(double a, double b)
,它们分别用于实现加法和减法运算。
public interface ICalculate
{
double Add(double a, double b);
double Subtract(double a, double b);
}
public class Calculator : ICalculate
{
public double Add(double a, double b)
{
return a + b;
}
public double Subtract(double a, double b)
{
return a - b;
}
}
接下来,我们可以创建一个Calculator
类的实例,并调用Add
和Subtract
方法来测试它们的功能。
Calculator calculator = new Calculator();
double sum = calculator.Add(1.0, 2.0); // 3.0
double difference = calculator.Subtract(3.0, 2.0); // 1.0
接口还可以用于实现多态,以下示例是定义一个IAnimal
接口,其中包含一个string Bark()
方法,用于描述动物的叫声。然后定义了两个类Dog
和Cat
,它们分别实现了IAnimal
接口的Bark
方法,并返回不同的叫声。
public interface IAnimal
{
string Bark();
}
public class Dog : IAnimal
{
public string Bark()
{
return "汪汪汪~";
}
}
public class Cat : IAnimal
{
public string Bark()
{
return "喵~";
}
}
然后,我们可以创建一个List<IAnimal>
类型的动物列表,将Dog
和Cat
实例添加到这个列表中,并遍历这个列表,调用每个动物的Bark
方法,输出它们的叫声。
List<IAnimal> animals = new List<IAnimal>
{
new Dog(),
new Cat()
};
foreach (IAnimal animal in animals)
{
Console.WriteLine(animal.Bark());
}
// Output:
// 汪汪汪~
// 喵~
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入理解C#之接口 - Python技术站