当前位置:网站首页>抽象类与接口
抽象类与接口
2022-07-29 05:09:00 【小洪正在努力】
抽象类,抽象方法,接口的总结
| 抽象方法 | 抽象类 | 接口 |
|---|---|---|
| 抽象方法没有方法体,交给子类实现 | 抽象类不一定有静态方法,有静态方法的一定是抽象类。 | JDK1.8之前:接口里只能写方法的声明,而不能写方法的具体实现 JDK1.8之后:接口可以对方法的声明写具体实现。 |
| 抽象方法修饰符 不能是private,final,static(因为需要子类实现)。 | 不能被实例化,只能被继承。 | 接口中没有构造方法,不能被实例化。 |
| 抽象方法必须定义在抽象类或接口中。 | 抽象类的子类可以不实现所有的抽象方法,但也必须作为抽象类。(抽象派生类) | 接口只能继承接口,不能继承类,接口支持多继承。 |
| 无 | 抽象类的构造器不能定义为私有。(子类构造方法会调用父类构造方法。) | 接口中定义的成员变量默认是public static final修饰的静态常量 |
| 无 | 抽象类不能定义为final,final (修饰的类不能被继承)。 | 接口中的方法: 默认是public abstract 修饰的抽象方法。 JDK1.8前不能有静态方法,不能有普通方法。 JDK1.8后可以有静态方法,可以有普通方法。 |
| 无 | 抽象类可以实现接口,可以继承具体类,也可以继承抽象类。 | 接口中定义的内部类,默认是public static 修饰的静态内部类。 |
| 无 | 抽象类中有普通方法,也可以有静态方法。 | 无 |
抽象类和接口的异同:
| 相同点 | 不同点 |
|---|---|
| ① 抽象类和接口都不能被实例化 | ① 抽象类有构造方法,接口没有构造方法 |
| ② 抽象类和接口都可以定义抽象方法,子类/实现类必须覆写这些抽象方法 | ② 抽象类可以包含普通方法,接口中只能是public abstract修饰抽象方法(Java8之后可以) |
| 无 | ③ 抽象类只能单继承,接口可以多继承 |
| 无 | ④ 抽象类可以定义各种类型的成员变量,接口中只能是public static final修饰的静态常量 |
| 无 | ⑤抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 |
| 无 | ⑥抽象类中可以包含静态方法,接口中不能包含静态方法。 |
感谢某位不知名博主的总结,在本博客中借鉴了很多对方的总结知识点:传送门
边栏推荐
- 副作用和序列点
- 510000 prize pool invites you to fight! The second Alibaba cloud ECS cloudbuild developer competition is coming
- 携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”
- 365 day challenge leetcode 1000 questions - day 039 full binary tree inserter + find peak II + snapshot array
- 终端shell常用命令
- Cryengine3 debugging shader method
- OCCT学习001-----简介
- 365天挑战LeetCode1000题——Day 037 元素和小于等于阈值的正方形的最大边长 + 满足条件的子序列数目
- CMU15-213 Malloc Lab实验记录
- 科班同学真的了解未来的职业规划吗?
猜你喜欢

C语言连连看秒杀辅助

OCCT学习002-----环境搭建

365天挑战LeetCode1000题——Day 042 数组序号转换 + 相对名次 离散化处理

Cmu15-213 malloc lab experiment record

AiTalk创始人梁宇淇:镜像连接虚拟与现实的纽带

365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值

Database course design of online assistant teaching platform for high school chemistry

【C语言系列】—文件操作详解(上)

Best practices for elastic computing in the game industry

阿里云架构师梁旭:MES on 云盒,助力客户快速构建数字工厂
随机推荐
副作用和序列点
Why is Google's internal tools not suitable for you?
【剑指offer】— 详解库函数atoi以及模拟实现atoi函数
Live broadcast preview | how to improve enterprise immunity through "intelligent edge security"?
365天挑战LeetCode1000题——Day 037 元素和小于等于阈值的正方形的最大边长 + 满足条件的子序列数目
研发效能|Kubernetes核心技术剖析和DevOps落地经验
终端shell常用命令
QML type: mousearea
CMU15-213 Malloc Lab实验记录
MySQL的基础概念+数据库系统结构+拓展延申+基础命令学习
QT learning: qdropevent drag event
ANSI C类型限定符
365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值
Solution: find the position of the first and last element in a sorted array (personal notes)
Bubble sort c language
Cryengine Technology
365 day challenge leetcode 1000 questions - day 040 design jump table + avoid flooding + find the latest grouping with size M + color ball with reduced sales value
平行云CEO 李岩:CloudXR ,开启通往元宇宙的通道
Differences between texture2d and texture2dproj under webgl1.0
C语言数组典型应用代码详细讲解—高手误入(逐步代码详解)