问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

抽象类和接口的相同点与不同点

发布网友 发布时间:2022-04-20 10:50

我来回答

4个回答

热心网友 时间:2022-04-29 13:04

一、两者相同点

1、不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类里的抽象方法必须全部被子类所实现,子类不能全部实现父类抽象方法,那么该子类还只能是抽象类。一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

二、两者不同点 

1、默认的方法实现

抽象类可以有默认的方法实现;接口,Java8规定可以为接口提供默认实现的方法并且不用强。

2、实现

制子类来重写子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要重写抽象类中的抽象方法;接口子类使用关键字implements 来实现接口,它需要重写接口中没有默认。 

3、构造器

抽象类可以有构造器,接口不能有构造器。

4、与正常Java类的区别

除了不能实例化抽象类之外,和普通Java类没有任何区别;接口是完全不同的类型外。

5、访问修饰符

抽象方法可有public.protected和default、abstract修饰符。不能用privatestatic.synchronize、 native 修饰;

接口属性默认修饰符是publicstatic final (必须赋初值) ,方法默认修饰符是publicabstract. Java8 开始出现静态方法,多加static关键字。

6、main方法

并且可以运行它;接口没有main方法,因此不能运行它。

7、多继承

抽象类可以继承一个类和实现多个接口;接口只可以继承一个或多个接口。

8、速度

抽象类比接口速度快;接口是稍微有点慢,因为它需要花时间去寻找在类中的实现方法。

9、添加新方法

如果往抽象类中添加新的方法,可以给它提供默认的实现,不需要改变现代码;如果往接口中添加方法,并且该方法没有默认实现,必须改变实现该接口的类。

扩展资料:

抽象类的运用意义

在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。

这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。

由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。

为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。

热心网友 时间:2022-04-29 14:22

一、两者相同点

1、不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

2、抽象类里的抽象方法必须全部被子类所实现,子类不能全部实现父类抽象方法,那么该子类还只能是抽象类。一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

二、两者不同点 

1、默认的方法实现

抽象类可以有默认的方法实现;接口,Java8规定可以为接口提供默认实现的方法并且不用强。

2、实现

制子类来重写子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要重写抽象类中的抽象方法;接口子类使用关键字implements 来实现接口,它需要重写接口中没有默认。 

3、构造器

抽象类可以有构造器,接口不能有构造器。

4、与正常Java类的区别

除了不能实例化抽象类之外,和普通Java类没有任何区别;接口是完全不同的类型外。

扩展资料:

抽象类的运用意义

在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。

这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。

由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。

为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。

参考资料来源:百度百科-抽象类

热心网友 时间:2022-04-29 15:57

相同点

* 都不能被直接实例化,都可以通过继承实现其抽象方法。
* 都是面向抽象编程的技术基础,实现了诸多的设计模式。

不同点

* 接口支持多继承;抽象类不能实现多继承。
* 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
* 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
* 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
* 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
* 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。

热心网友 时间:2022-04-29 17:48

相同点: 

他们都能不能生成实例,都有抽象方法。 

接口是特殊的抽象类。 

接口和抽象类的继承都使用的关键字是extends。

不同点: 

接口的定义的变量默认是public static final型,且必须给其赋初值。所以在实现类中不能重新定义,也不能改变其值。而在抽象类中其值在子类中可以重新定义也可以重新赋值。

接口的方法默认的都是public abstract类型的。 

抽象类中可以有构造器,但是接口中除了抽象方法什么都没有。 

名字不同,接口写的是public interface  Shape{}; 

而抽象类写的是public  abstract class Shape{}; 

接口里全部都是抽象方法。

而抽象类里可以有抽象方法也可以有其他的方法。

接口里的属性都是静态的。

但是抽象类的属性可以是任意的。 

还可以从继承的角度看,接口可以多继承,一个接口可以继承多个接口。

但是抽象类却不能,只能是继承一个父类,不能继承多个父类。要是能继承多个父类的话会在父类和子类的方法中有发生冲突。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中导条约是什么意思 南京的事业单位待遇好吗 condition ...个登陆和注册信息的源代码,最简单的就可以,不需要数据库的那种... 个旧附近的vba编程培训机构哪家比较正规? 个旧附近的.Net培训班? 个旧附近的编程培训班? 个旧附近哪里有编程培训在哪里? 湖口哪里可以学电脑电脑技术哪里可以学习 个旧北大青鸟少儿编程培训学费多少? java里的接口可以理解为抽象类的抽象方法吗 java中,可以说“接口也是一个类吗”? 接口与抽象类的区别 Java接口和抽象类的区别深入剖析 C语言中的接口是什么?它和抽象类有什么区别? 什么是接口?接口与抽象类有什么区别和联系? 求试题... java的接口和抽象类分别有什么作用? 接口是不是抽象的 抽象类和接口的区别? 美的空调和格力空调哪个好,有何区别? 空调扇和空调哪个好 家庭装哪个空调一般使用哪个变频的还是那个电瓶的... 格力空调和美的空调哪个好! 国产空调哪个牌子好?要怎么选购空调? 格力空调和美的空调哪个质量好? 美的空调和格力空调哪个好,选哪个很纠结? 哪个牌子的空调好 五大热门空调推荐 中央空调和壁挂空调应该怎么选择?哪种空调比较好? 家用空调怎么选择,卡萨帝空调与格力空调哪个好? 海尔空调海信空调哪个好? java里什么是抽象类,接口类,普通类就不用说了, JAVA 接口和抽象类的区别 渝康码怎么申请? 渝康码代人申领是什么意思 澳门怎么申请渝康码 渝康码核验行程是什么 微信渝康码怎么帮别人申请 哪里都没去渝康码怎么没有了 渝康码在微信哪里找 兰州幼儿如何申领渝康码 有没有可以自动制冰的冰箱推荐一下? 港澳台怎么申请渝康码 有没有哪款冰箱有自动制冰功能 不要太大的 我厨房小 重庆渝康码实名认证失败显示 姓名与用户不匹配是怎... 手机上没绑银行卡渝康码怎么弄? 西门子有制冰功能的冰箱需要不需要安排 排水? 微信支付邦家长的银行卡 渝康码怎么弄 我用自己的手机帮别人申请了一个渝康码,怎么才能转... 单开门冰箱有制冰功能吗 渝康码代人申请后如何查