一、 面向对象之基础
1. 子类对象的内存中,是否包含父类中定义的 private 成员变量?
- 有包含
-
private
的本质只是做了一层访问权限控制 - 通过子类从父类继承来的 getter 或 setter 方法,就可以证明其存在
2. 被 final 修饰的类、方法、变量有什么特点?
-
final
修饰类,类无法被继承 -
final
修饰方法,方法无法被重写 -
final
修饰变量,变量只能被赋值一次
3. 在 Java 中什么被称为常量(Constant)?
- 被
static final
修饰的变量,称为常量
4. 内部类有什么特点(至少说两个)?内部类的内存分布图(脑海中要有印象)?
image.png image.png image.png5. 静态嵌套类对比顶级类 有什么相同?有什么不同?(能各说一点即可)
- 静态嵌套类在行为上就是一个顶级类,只是定义的代码写在另一个类中
- 对比一般的顶级类,静态嵌套类多了一个特殊访问权限
6. 什么情况下使用嵌套类?(能说出一点即可)
- 如果必须先有 A 类,才会出现 B 类,可以把 B 类定义成 A 类的嵌套类
7. 局部类(先存个笔记,暂时不需要去看,忽略它)
image.png二、 面向对象之抽象
1. 抽象类对比一般类有什么不同?
- 抽象类运行声明抽象方法
- 抽象类不能实例化
2. 什么情况下会使用抽象类?
- 抽象子类的公共实现到抽象父类中,要求子类必须要单独实现的定义成抽象方法
3. 在 Java 中什么是接口? 接口一般以什么结尾?
- ① 一系列方法声明的集合
- ② 用来定义规范、标准
- 接口的名字一般以
able
结尾,表示是具有一系列的能力
4. Java 的接口中可以定义的一些内容?(说三点比较重要的即可)
- 抽象方法
- 默认方法
- 静态方法
5. 继承和实现的区别?
- 继承表示的
is-a
的关系 - 实现可以表示
has-a
的关系 - Java 中只支持
单继承
,但是可以实现多个接口
6. 继承和抽象类的对比(何时选择继承?何时选择抽象类?)
image.png7. 如果父类定义的非抽象方法与接口的默认方法相同,最终将调用谁的方法?
- 最终将调用父类的方法
8. 从 JDK8 开始,如果想对接口进行升级,添加新的功能,有哪三种做法?(必须要能回答出来)
- 添加接口(但是所有的类必须实现新的接口,不然会报错)
- 添加默认方法
- 添加静态方法
9. 接口中如何定义静态方法以及如何调用?
image.png10. 在 Java 中的接口有可选方法吗?
- 没有,默认情况下接口的所有方法都要求实现,除非默认实现或静态方法
网友评论