中的抽象类,抽象类和接口异同

正文化总同盟结了在 C# 个中,接口与抽象类的大器晚成对纠纷,来与我们分享。

在C#中抽象类和接口是四个比较重大的概念,深入掌握对C#程序猿是不行必要的,现总计如下:

一、抽象类 

(1卡塔尔国 抽象方法只作评释,而不含有完成,能够作为是从未完毕体的虚方法

(2卡塔尔(英语:State of Qatar) 抽象类无法被实例化 

(3卡塔尔 抽象类能够但不是必得有抽象属性和虚幻方法,不过假诺有了用空想来欺骗别人方法,就势要求把这么些类注脚为架空类 

(4卡塔尔(قطر‎ 具体派生类务必覆盖基类的说梅止渴方法 

(5卡塔尔(قطر‎ 抽象派生类能够覆盖基类的肤浅方法,也能够不隐讳。借使不隐讳,则其现实派生类必得覆盖它们。

黄金年代、抽象类的特征:

二、接 口 

(1卡塔尔 接口不可能被实例化

(2卡塔尔(قطر‎ 接口只可以分包方法申明 

(3卡塔尔 接口的积极分子包罗方法、属性、索引器、事件 

(4卡塔尔(英语:State of Qatar) 接口中无法包括常量、字段(域卡塔尔(قطر‎、布局函数、析构函数、静态成员。

(5卡塔尔(英语:State of Qatar) 接口中的全部成员暗许为public,由此接口中不可能有private修饰符    

(6卡塔尔(英语:State of Qatar) 派生类必得兑现接口的兼具成员 

(7卡塔尔国 八个类能够直接实现三个接口,接口之间用逗号隔离 

(8卡塔尔(英语:State of Qatar) 一个接口能够有五个父接口,完结该接口的类必得兑现全数父接口中的全数成员 

1、抽象方法只用于方法的宣示并不包罗方法的达成,能够当做未有兑现实体的虚方法。

三、抽象类和接口     

2、抽象类无法展开实例化。

相同点: 

(1卡塔尔国 都能够被三回九转     

(2卡塔尔(قطر‎ 都不能够被实例化     

(3卡塔尔(英语:State of Qatar) 都足以包涵方法注明 

(4卡塔尔 派生类必需兑现未兑现的办法     

3、抽象类里面能够不包涵抽象属性和架空方法,但万风华正茂含有抽象方法,则该类必须表明为抽象类。

区 别: 

(1卡塔尔 抽象基类能够定义字段、属性、方法达成。接口只好定义属性、索引器、事件、和艺术注明,不能够包括字段。 

(2卡塔尔 抽象类是一个不完全的类,须求更为细化,而接口是三个行为规范。微软的自定义接口总是后带able字段,注明其是抒发豆蔻梢头类“作者能做。。。”     

(3卡塔尔(قطر‎ 接口能够被多重贯彻,抽象类只好被单纯继承 

(4卡塔尔 抽象类更加的多的是概念在一密密麻麻紧凑相关的类间,而接口大大多是关乎疏松但都落到实处某黄金年代效应的类中 

(5卡塔尔 抽象类是从意气风发多级相关对象中架空出来的概念, 由此反映的是事物的此中国共产党性;接口是为着满意外界调用而定义的二个功力约定, 由此反映的是事物的表面特征 

(6卡塔尔国 接口基本上不富有持续的任何具体特点,它可是承诺了能够调用的法子         

(7卡塔尔国 接口能够用于扶助回调,而继续并不具备那么些天性 

(8卡塔尔国 抽象类达成的具体方法私下认可为虚的,但实现接口的类中的接口方法却暗许为非虚的,当然你也足以表明为虚的  

(9卡塔尔 若是抽象类落成接口,则足以把接口中方法映射到抽象类中作为抽象方法而不用完成,而在抽象类的子类中落到实处接口中艺术

 

作者:耑新新,发布于  博客园

转载请申明出处,款待邮件调换:zhuanxinxin@foxmail.com

4、具体的派生类必需覆盖基类的虚幻方法。

5、抽象类也能够派生另三个抽象类,个中能够覆盖基类的悬空方法也得以不用覆盖,可是不隐讳的话,

则其派生类相比较覆盖它们。

二、接口(interface)的特点

1、接口也无法打开实例化。

2、接口只好分包类的扬言。

3、成员能够分包属性、方法、事件和索引器。

4、接口中不能包罗常量、字段、布局函数、析构函数或静态成员。

5、接口
中兼有的积极分子都暗中同意用public修饰符进行修饰,不可能现身private修饰符。

6、派生类相比较达成接口全数的成员。

7、二个足以继续三个接口,接口之间用 , 分割。

8、贰个接口可以有四个父接口,实现该接口的类必需贯彻全数父接口中的全部成员。

三、抽象类和接口的近似之处

1、都无法被实例化。

2、都得以被持续。

3、都能够蕴含方法申明。

4、派生类务必实现抽象类(接口)中未落成的艺术。

四、抽象类和接口的差异之处

1、抽象类是叁个缺损的类,须要更为细化;接口只是三个人展览现的正统或规定。

2、抽象基类可以定义字段、属性和方法完结;接口只可以定义属性、索引器、事件和办法评释,不能够蕴含字段。

3、抽象类越来越多的是概念在乎气风发多级关系紧凑的类之间;接口大多定义在关系稀松但都落到实处某风流倜傥功力的操作。

4、接口不富有持续的任何特点。

5、接口能够被多种落到实处,抽象类只好被单纯世襲。

6、接口协理回调,抽象类不得以。

7、抽象类不可能密闭。

8、抽象类实现的具体方法暗中认可为虚的;但落到实处接口的类中的接口方法暗中认可不是虚的,当然也可手动注解为虚的。

9、接口和非抽象类相像,抽象类必得为在那类的基类列表中列出的接口的具备成员提供他本身的贯彻。不过允许抽象类将接口的措施隐射到虚幻方法上。

10、假诺抽象类实现接口,则足以把接口中的方法映射到抽象类中作为抽象方法而不要完成,而是在抽象类的子类中完成接口中的方法。

自身的新型公众号迎接关切一下

相关文章