接口的基本概念
-
定义接口 :
使用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#中的接口有所帮助!