接口的基本概念
-
定义接口:
使用interface
关键字定义接口。接口中的成员默认是public
,不能有访问修饰符,也不能包含字段、构造函数或实现的方法,只能包含方法、属性、事件和索引器的声明。 -
实现接口:
类使用:
冒号后接接口名来实现接口。如果一个类实现了接口,它必须实现接口中的所有成员。 -
接口的用途:
- 定义通用的操作,而不关心具体的实现。
- 实现多重继承的效果,因为一个类可以实现多个接口。
代码示例
定义接口
public interface IAnimal | |
{ | |
void Eat(); | |
void Sleep(); | |
} |
实现接口
public class Dog : IAnimal | |
{ | |
// 实现接口中的方法 | |
public void Eat() | |
{ | |
Console.WriteLine("Dog is eating."); | |
} | |
public void Sleep() | |
{ | |
Console.WriteLine("Dog is sleeping."); | |
} | |
} | |
public class Cat : IAnimal | |
{ | |
// 实现接口中的方法 | |
public void Eat() | |
{ | |
Console.WriteLine("Cat is eating."); | |
} | |
public void Sleep() | |
{ | |
Console.WriteLine("Cat is sleeping."); | |
} | |
} |
使用接口
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
IAnimal myDog = new Dog(); | |
IAnimal myCat = new Cat(); | |
myDog.Eat(); | |
myDog.Sleep(); | |
myCat.Eat(); | |
myCat.Sleep(); | |
} | |
} |
接口的高级用法
-
接口的继承:
接口可以继承其他接口,从而构建更复杂的接口层次结构。public interface IAdvancedAnimal : IAnimal
{
void Run();
}
public class Tiger : IAdvancedAnimal
{
public void Eat()
{
Console.WriteLine("Tiger is eating.");
}
public void Sleep()
{
Console.WriteLine("Tiger is sleeping.");
}
public void Run()
{
Console.WriteLine("Tiger is running.");
}
}
-
显式接口实现:
如果一个类实现了多个接口,而这些接口中有同名的方法,可以使用显式接口实现来避免冲突。public interface IFirst
{
void Show();
}
public interface ISecond
{
void Show();
}
public class MultiInterfaceClass : IFirst, ISecond
{
void IFirst.Show()
{
Console.WriteLine("IFirst Show");
}
void ISecond.Show()
{
Console.WriteLine("ISecond Show");
}
}
class Program
{
static void Main(string[] args)
{
MultiInterfaceClass obj = new MultiInterfaceClass();
((IFirst)obj).Show();
((ISecond)obj).Show();
}
}
总结
- 接口是一种定义契约的方式,确保实现类遵循特定的格局。
- 接口只包含成员的声明,不包含实现。
- 一个类可以实现多个接口,从而实现多重继承的效果。
- 接口可以继承其他接口。
- 显式接口实现用于解决接口方法冲突的问题。
通过理解和使用接口,你可以设计出更加灵活和可扩展的代码结构。希望这些讲解和示例对你理解C#中的接口有所帮助!