当前位置:网站首页>抽象类和接口的区别(最详细)
抽象类和接口的区别(最详细)
2022-07-25 09:17:00 【努力努力再努力Gzc.】
1、抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象方法只能申明,不能实现。
7、抽象类里可以没有抽象方法
8、如果—个类里有抽象方法,那么这个类只能是抽象类
9、抽象方法要被实现,所以不能是静态的,也不能是私有的。
10、接口可以继承接口,并且可多继承接口,但类只能单—继承。
11.接口可以通过匿名内部类实例化。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。而接口表示的是,这个对象能做什么。
扩展说明设计层面区别如下
1,抽象类是对事物的抽象,即对类抽象;接口是对行为抽象,即局部抽象。抽象类对整体形为进行抽象,包括形为和属性。接口只对行为进行抽象。
例子:举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly(),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个"是不是"的关系,而 接口 实现则是"有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。
2,抽象类是多个子类的像类,是一种模板式设计;接口是一种形为规范,是一种辐射式设计。
例子:最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt B和ppt C,ppt B和pptC公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt B和pptC进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。
边栏推荐
- Oracle10g单实例数据库升级到哪个版本好,求建议
- JDBC quick start
- 对称式加密与非对称式加密的对比
- 图解LeetCode——1184. 公交站间的距离(难度:简单)
- Canvas text JS special effect composed of many circles
- Query efficiency increased by 10 times! Three optimization schemes to help you solve the deep paging problem of MySQL
- Redis sentry, master-slave deployment details
- 有误差的字符串型时间比较方法String.compareTo
- Sticky.js page scrolling div fixed position plug-in
- Silicon Valley classroom lesson 12 - official account on demand course and live broadcast management module
猜你喜欢

Neural network learning (1) Introduction

Wechat applet obtains the data of ---- onenet and controls the on-board LED of STM32

mysql中的数据结果排名

将list集合的某一字段拼接单个String

activemq--可持久化机制之JDBC的journal

为什么说DAO是未来的公司形式

超赞的yolo目标检测训练所用垃圾分类数据集共享——标注好的约3000张

Arrange the array into the smallest number

Ten thousand words long, one word thoroughly! Finally, someone has made business intelligence (BI) clear

activemq--可持久化机制之JDBC代码
随机推荐
Comments on specific applications of camera
Solve NPM error: cannot find module 'shelljs‘
Uniapp intercepts route jumps through addinterceptor to control whether the page needs to log in
Do you know these methods of MySQL database optimization?
How to write the code of wechat applet implementation tab
registration status: 204
SSM高级整合
有误差的字符串型时间比较方法String.compareTo
uni-app - Refused to display ‘xxx‘ in a frame because an ancestor violates the following Content Sec
registration status: 204
【Nacos】NacosClient在服务注册时做了什么
How to use pixi.js to make simple Parkour games
Probe into Druid query timeout configuration → who is the querytimeout of datasource and jdbctemplate effective?
NFT guide for musicians
Labview--- signal generator
Canvas text JS special effect composed of many circles
This ten-year content industry infrastructure company is actually an invisible Web3 pioneer
C#语言和SQL Server数据库技术
2022-7-14 JMeter pressure test
Silicon Valley class lesson 11 - official account news and wechat authorization