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

抽象类与接口的区别简答

发布网友 发布时间:2022-03-24 19:58

我来回答

1个回答

热心网友 时间:2022-03-24 21:27

区别:

1、概念的区别:

抽象类是从一些类中抽取出它们共有的属性(例如某些相同的成员变量、属性相同(修饰符、函数名、参数类型、参数个数)的方法),注意方法的修饰符可以为public或者protected(因为假如是private则子类无法继承),缺修饰符情况下默认为public,抽象类注重于对类本身的抽象,抽象方法没有方法体,仅仅是声明了该方法,让继承它的子类去实现。
而接口主要是对类的行为的抽象,接口也可以有变量和方法,但是变量以及方法的修饰符都必须分别是public static final(省略时也会默认是这个)和public abstract(省略时也会默认是这个)。

注意:
在java 8以后, 对接口做了新的修改,允许接口有默认方法default,即可以为接口添加实现方法,这样实现接口的类就不需要做任何的改动就能继承该接口所实现的该默认方法了;这样就使得接口与抽象类更相似了(因为抽象类不仅存在抽象方法,而且还可以有具体的已经实现了的方法)。

2、语法定义的区别:

抽象类通过 public abstract class 抽象类名字 {成员变量1…n; puclic abstract 返回类型 抽象方法名1…n(参数类型、参数名字1…n){};}来定义。抽象类还可以有不是抽象方法的方法。上两行只是说明了抽象方法的语法定义。
接口通过public interface 接口名字{public static final 成员变量1…n;public abstract 返回类型 方法名1…n(参数类型、参数名字1…n){};}来定义。接口只能包含抽象方法(这是以前),在java 8以后可以包含默认的实现方法default(上面已经讲过了,这里再重复一遍)。

3、单继承与多继承的区别:

在java编程语言里,类与类之间只允许单继承,即一个类只能继承一个抽象类;但是一个类可以实现多个接口implements 接口1…n,实现多继承。

4、能否包含构造方法:

接口中不允许存在构造方法,因为接口的成员变量都是static final变量,是在编译的时候就完成了初始化操作了,也不需要通过构造方法来进行初始化操作,而接口的方法是抽象方法,和抽象类一样只是声明之后让实现它的类去完善该方法体的;而抽象类可以有构造方法,因为抽象类除了有抽象的方法以外,其余地方与普通的类其实是没什么区别的,所以可以通过构造方法完成一些初始化的操作。

相同点:

1、它们都不能被实例化,就是不能直接new()为它们分配空间,而是需要通过继承或者实现它们的类将它们实例化。
2、继承或者实现它们的类都必须实现它们所有的抽象方法。假如继承该抽象类的类没有全部实现抽象方法,则还是一个抽象类。

使用它们的技巧(场景):

当我们需要研究事物的本质属性时,可以考虑使用抽象类来讲它们共有的属性抽象出来,可以减少代码量,优化程序的结构;
当我们想要对某一种行为进行研究时,可以考虑使用接口,对很多的类所共有的该方法(行为)进行抽象,让不同的类去实现属于该类的方法,通过接口变量就可以实现接口回调。

补充:

接口变量:接口可以声明变量,称为接口变量。
接口变量可以存放一个对象的引用(地址), 要求该对象的类实现对应接口。
接口回调:指把实现了某个接口的类的对象的引用赋值给该接口声明的接口变量。
通过接口变量去调用被类实现的接口的方法。
通过接口变量无法调用类中非实现接口中声明的方法。


作者:那星阿伦

链接地址:网页链接

来源:CSDN

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小米平板6Max没有网络怎么办 ...wifi和4G网络我都试过都现实吗没有网络。刚买的是正品没有刷机_百度... 2023年淘宝双11招商规则 淘宝国庆狂欢季招商规则及玩法 淘宝年货买不停招商规则 淘宝超来电活动招商规则 ZIP转换成RAR怎么转换? 衢州醉根艺品有限公司怎么样? 徐谷青主要业绩 徐谷青人物介绍 抽象类和接口的区别在哪里? 抽象类和接口的区别与联系 简述抽象类和接口的区别 接口和抽象类有什么区别? 接口和抽象类区别是什么? 接口和抽象类的区别是什么? 抽象类和接口有什么区别? “抽象类”和“接口”的区别是什么? 抽象类和接口的区别是什么? 华为mate3opro怎么没有分屏功能? 华为mate30pro怎样设置屏幕显示多个 华为mate30分屏功能 华为mate30epro如何调节分屏大小? 华为Mate30E pro,升级后就没有智慧分屏了,这个功能都没有了,怎么设置? 华为mate30pro为啥不能分屏 华为mate30epro怎么分屏 华为mate30pro可不可以边看电视边淘宝 分屏怎么设置 华为mate30pro 华为mate30pro打游戏的时候如何开小窗口? mate30e pro如何分屏 接口和抽象类的区别是什么? 接口抽象类区别 接口和抽象类的区别 什么是接口与抽象类有什么区别 java简述抽象类和接口的区别 抽象类和接口有什么区别 java中抽象类和接口的区别? 接口和抽象类的主要区别!!! 抽象类和接口的区别 如果忘记自己的电话号码,该怎么找回? 手机重置了,如何找回电话号码 手机电话号码怎么恢复 怎么把电话号码找回来 怎样找回手机号码密码 对方电话拉黑怎么破解 对方把我的手机号码加入黑名单应该怎么破解? 对方把你电话拉进黑名单怎么去破解? 关于手机号码被对方屏蔽怎样破解问题? 被对方拉黑电话怎样能破解 怎样破解对方把我手机号信息列入黑名单?