首页

文章

抽象类与接口的区别简答

发布网友 发布时间: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

如何为职务侵占罪进行辩护 职务侵占如何辩护 职务侵占罪有效辩护点有哪些 miui11开发者选项在哪_小米miui11开发者选项在哪 查询考研成绩需要什么 考研查分前要做什么 考研查询需要什么证件 研究生什么专业好 什么专业的研究生最好 考研究生什么专业好 研究生学什么专业 宝石花的养殖方法介绍 宝石花怎么养才长得好 不想让老婆看到我电脑里的一些东西怎么办? 桥好路由器停电后在来电老是获取lp 勒索病毒加密的文件如何恢复? TPU贴合膜多少钱 华为手机如何将输入法改为简体 肉丝炒金针菇做法 仓储冷链信息怎么申报 什么是药品冷链物流 浙江食品冷链运输多少钱 生物冷链具备什么资质 投诉检测站最有效办法 冢君的解释 304C型钢厂 真诚推荐 永浩供 乌鲁木齐球墨铸铁厂家排名 2023年抖音618好物节招商规则 2023年抖音好物年货节好物直播间玩法说明 抖音2023好物年货节玩法攻略 互联网内容平台——小红书的优势与困境 ...女儿房间的空调洗一下滤网,问一下格力小金豆空调面罩怎么打开... 传真机和打印机有什么区别? 传真纸和打印纸哪个好 传真纸和复印纸哪个好 虚拟语气as though 的问题 We didn't know his telephone number, otherwise we would have teleph... 我想问一下 错综复杂条件句 那怎么不能使用在这里 if i can do this... 好可怕...好可怕的梦... 线束组装线束组装工艺要求 汽车线束英语翻译 带表卡尺怎么读数 带表卡尺的使用方法 压力变送器数显表 公主连结凯露表情包大全 臭鼬表情包图片一览[多图] 单眼皮怎么使用双眼皮贴? 咬人的那特小的虫子叫什么 Bose音响怎么连接蓝牙 博士音响蓝牙怎么连接 夹了一片菜叶,上面摆了七根鱼刺和在碗里放了七个汤勺,每个汤勺里放一根... 微信聊天记录怎么才能彻底删除?通过这几种操作可以确保隐私安全!_百度... IDM IDMShellExt64.dll无法删除 - 删除使用中的(进程相关或残留)文件... 写关于活动的句子100字 抽象类和接口的区别在哪里? 抽象类和接口的区别与联系 简述抽象类和接口的区别 接口和抽象类有什么区别? 接口和抽象类区别是什么? 接口和抽象类的区别是什么? 抽象类和接口有什么区别? “抽象类”和“接口”的区别是什么? 抽象类和接口的区别是什么? 华为mate3opro怎么没有分屏功能? 华为mate30pro怎样设置屏幕显示多个 华为mate30分屏功能 华为mate30epro如何调节分屏大小? 华为Mate30E pro,升级后就没有智慧分屏了,这个功能都没有了,怎么设置? 华为mate30pro为啥不能分屏 华为mate30epro怎么分屏 华为mate30pro可不可以边看电视边淘宝 分屏怎么设置 华为mate30pro 华为mate30pro打游戏的时候如何开小窗口? mate30e pro如何分屏 接口和抽象类的区别是什么? 接口抽象类区别 接口和抽象类的区别 什么是接口与抽象类有什么区别 java简述抽象类和接口的区别 抽象类和接口有什么区别 java中抽象类和接口的区别? 接口和抽象类的主要区别!!! 抽象类和接口的区别 如果忘记自己的电话号码,该怎么找回? 手机重置了,如何找回电话号码 手机电话号码怎么恢复 怎么把电话号码找回来 怎样找回手机号码密码 对方电话拉黑怎么破解 对方把我的手机号码加入黑名单应该怎么破解? 对方把你电话拉进黑名单怎么去破解? 关于手机号码被对方屏蔽怎样破解问题? 被对方拉黑电话怎样能破解 怎样破解对方把我手机号信息列入黑名单?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com