接口内部只允许定义方法名而不允许写方法内部的执行代码,那它是怎样封装一个完整的方法的呢?
时间: 2024-09-21 19:01:57 浏览: 28
接口在C#中主要用于声明一组规范,即接口中定义的方法、属性和事件,但实际上并没有具体的实现代码。当一个类实现某个接口时,它需要提供对接口中所有方法的具体实现。这实际上是将接口的设计思想体现为一种“契约”——接口定义了一组期望的行为,而实现它的类则是履行这份契约。
举个例子,假设我们有一个接口 `IAnimal` 定义了一个叫声方法 `MakeSound()`:
```csharp
public interface IAnimal
{
string MakeSound();
}
```
然后我们可以有多种动物类来实现这个接口,比如 `Dog` 和 `Cat` 类:
```csharp
public class Dog : IAnimal
{
public string MakeSound() => "Woof!";
}
public class Cat : IAnimal
{
public string MakeSound() => "Meow!";
}
```
这样,`Dog` 和 `Cat` 类虽然直接在接口内没有提供实现,但在它们各自的类里提供了完整的 `MakeSound()` 方法实现。客户端代码通过 `IAnimal` 接口来调用 `MakeSound()`,并不关心是由哪一类对象完成的,这就体现了接口的封装性和灵活性。
阅读全文