网站首页 > 文章精选 正文
1、为什么会有接口和抽象类?
从语言设计的角度考虑,为什么需要有接口和抽象类?
(1)对事物进行抽象得到类,对普通类的操作得到了基础的封装和继承功能。
(2)进一步审查这些类,如果发现:父类知道子类一定要完成某个功能,但是每个子类完成的情况是不一样的。子类以后也只会用自己重写的功能,那么父类的功能就可以定义为抽象方法。于是就用到了抽象类。
(3)普通类和抽象类都只能单继承。
(4)进一步审查发现有些对象还可以进一步抽象,而后有时候还需要多继承,这个时候可以使用接口。接口定义了一些行为,继承接口的类应该必须拥有这些行为,按照这些行为去做。接口定义的行为内容子类都要去实现,接口还可以多继承。
2、接口和抽象类的具体区别
- 接口永远是公共的,而且里面只能有方法,属性,委托和索引器,不能在接口里面写出方法或属性的实现代码。而抽象类里面可以拥有字段,抽象方法,非抽象方法。
- 子类实现接口的方法时,不需要任何关键字,直接实现即可。抽象类实现的时候的抽象成员要用override重写。
- 抽象类主要是用来拓展类的功能和属性,而接口主要是用来规定类的行为方式。如果你需要共享状态或部分实现,那么应该使用抽象类。如果你需要定义一组行为,并且不关心具体实现,那么应该使用接口。
- 接口的意义是为了实现多态。
- 实现接口的子类必须将接口的所有成员函数实现。
- 接口可以继承多个接口,抽象类只能继承一个类(一个子类只能有一个父类),且继承的类必须写在最前面
3、接口和抽象类相同的地方
- 都不能直接实例化(也就是不能new一个对象)
- 都可以包含未实现的声明方法。
- 子类必须实现抽象类的抽象方法,接口的所有成员(包括方法,其他成员)
......后续继续补充
猜你喜欢
- 2025-06-03 2、Java面向对象编程思想(超详细)
- 2025-06-03 信息系统项目管理师综合知识:面向对象方法
- 2025-06-03 canvas学习和面向对象(二)(canvas详解)
- 2025-06-03 python进阶突破面向对象——四大支柱
- 2025-06-03 Swift 面向对象解析(一)(swift 面向协议编程)
- 2025-06-03 简述JS面向对象编程(个人理解,简易版)
- 2025-06-03 软考系规:面向对象系统分析与设计详解
- 2025-06-03 Python基础篇-面向对象编程(python 面向对象知乎)
- 2025-06-03 此继承非彼继承,今天说的是面向对象的基本特征之一
- 2025-06-03 一张图深入解析面向对象常见概念,秒懂
- 最近发表
-
- 面试中常被问到的Hash表,你了解吗
- JAVA面试考点:一文搞懂一致性Hash的原理和实现
- 一次性搞清楚equals和hashCode(hashcode() 与equals()区别,简单说明)
- HashMap.Key的故事:Key为什么出现Hash碰撞及冲突呢?
- hash冲突的几种解决方案对比(hash冲突的解决方式)
- 游戏王LN 无头骑士(无头骑士cv)
- Linux ln、unlink命令用法(linux link命令详解)
- n和l分不清矫正发音方法,这三步就够了
- golang引用私有gitlab项目代码(golang引入当前包下的文件)
- Instamic:录音领域中的 GoPro,让你想录就录,随心所欲
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)