美文网首页
c#接口interface和抽象类abstract的区别

c#接口interface和抽象类abstract的区别

作者: 江南极客 | 来源:发表于2023-03-30 21:52 被阅读0次

    相同点:

    1、都可以被继承

    2、都不能被直接实例化

    3、都可以包含方法的声明

    不同点:

    1、接口不能包含成员变量,也就是字段,抽象类可以包含成员变量

    2、接口不能包含构造函数,抽象类可以包含抽象函数

    3、接口可以多继承,抽象类只能单继承

    4、接口子类必须实现所有声明的方法,抽象类子类必须实现所有的抽象方法(必须是共有的),以override重写的方式来实现抽象方法,普通方法可以不实现(不带abstract修饰的)

    5、接口方法声明默认public,不能用其它修饰符修饰,否则编译会报错,抽象类的普通方法可由其它访问修饰符修饰,抽象方法必须是public

    另外:

    一个类只能继承一个抽象类,能继承多个接口,抽象类可以看做亲爹,只能有一个,接口可以看做干爹,可以有多个。

    接口可以看做是一个约定,其中定义了类或结构体继承之后需要实现的功能。

    接口一旦被继承,派生类就必须实现接口中的所有成员,除非派生类本身也是抽象类。

    接口中可以包含方法、属性、事件、索引器。

    一个接口可以继承另一个接口,例如接口1继承接口2,一个类继承接口1时,必须同时实现接口1和接口2的所有成员。

    视频解析地址:

    https://www.bilibili.com/video/BV1Aq4y1T7uT/?vd_source=fe3df5734b9eeda1b10a81178055917f

    相关文章

      网友评论

          本文标题:c#接口interface和抽象类abstract的区别

          本文链接:https://www.haomeiwen.com/subject/pkmcddtx.html