asp.net

C#接口的使用

2025-09-18

01 抽象类与抽象方法

抽象方法必须放到抽象类中,但是一个抽象类是可以没有任何抽象方法的;


02 父类、子类与接口

父类一般只放共同的行为,对于部分子类的行为,不能全部放到父类中,因为后面扩展的时候这些会自动的延续到子类,所以我们可以把这部分抽象为接口。


谁具有这样的行为,谁实现接口,进行统一的管理;


即接口侧重的是行为的规范,继承侧重的是复用;


03 接口规定


3.1、接口命名必须以I开头;


3.2、接口的方法都是没有实现的方法;


3.3、接口的方法不需要写public,因为默认都是public,接口没有私有的(这点与Java不同);


3.4、接口既可以抽象方法,也可以抽象属性,关键字是interface;



04 接口的特点

接口具有强制性,一个类实现一个接口,就必须把接口所有的方法都实现,并且不能改变方法的签名;


05 面向细节编程与面向抽象编程

Panda panda = new Panda();


以前一般是这样编程,即针对细节具体编程;


针对细节编程,就是使用的这个对象是普通的对象,这个对象里有什么属性、方法,就能使用什么属性、方法;


与细节编程相对的是面向抽象编程,就是关注的是这个抽象的行为(抽象方法和接口),具体如何实现,无需关心;


针对细节编程和面向对象编程的不同:细节必须实现,如果没有实现,则无法提供给调用者;但是面向抽象编程则不同;


抽象编程只要将实现的行为提前规定好,这样调用者就可以使用了;


面向抽象编程目的:


①实现扩展;


②实现团队分别开发;


06 接口和抽象类的区别

①接口侧重的是功能的封装,抽象类侧重的是代码的复用,虽然两者都可以实现多态,但是在扩展中,若没有要继承的内容时,一般直接使用接口,即使有要继承的内容,通常把公共内容放到父类中,然后将需要多态的行为,放到接口中。


②接口更简洁,使用更方便,在框架设计中,抽象的都会变成接口,而不是使用抽象类。



07 多态的基本原则

依据的是里氏替换原则;


08 接口分类

①自定义接口,根据我们实际的项目开发,自己定义的接口;


②系统接口,也就是.NET平台已经封装好的,可以给我们直接应用的接口,例如IList<T>接口;