07、Java 基础硬核复习:面向对象编程(进阶)的核心逻辑与面试考点
第一部分:核心知识体系
1. this 关键字
- 作用1:调用本类属性/方法
解决局部变量与成员变量同名时的冲突(如this.name = name;)。 - 作用2:调用本类构造器
必须在构造器第一行,且不能与super同时使用(如this()调用无参构造器)。
2. super 关键字
- 作用1:调用父类属性/方法
访问父类被重写的成员(如super.run();)。 - 作用2:调用父类构造器
必须在子类构造器第一行,用于初始化父类属性(如super(name);)。
3. 继承性(Inheritance)
- 语法 :
class 子类 extends 父类 {} - 特点 :
- 单继承:Java 类只能继承一个父类(避免多继承的歧义)。
- 传递性:子类继承父类,间接继承父类的父类。
- 好处:代码复用(子类继承父类的属性和方法)。
- 局限性 :
- 方法重写规则:子类方法不能比父类方法更严格(如父类
public,子类不能private)。 - 单继承限制:无法同时继承多个父类。
- 方法重写规则:子类方法不能比父类方法更严格(如父类
4. 方法重写(Override)
- 规则 :
- 方法名、参数列表、返回值类型必须与父类一致(协变返回类型允许子类返回父类返回值的子类)。
- 访问权限不能更严格(如父类
protected,子类不能private)。
- 与重载(Overload)的区别 :
重写是子类对父类方法的覆盖,重载是同一类中方法名相同但参数列表不同的方法。
5. 多态性(Polymorphism)
- 向上转型(自动类型转换) :
父类引用指向子类对象(如Animal a = new Dog();),调用方法时执行子类重写的方法。 - 向下转型(强制类型转换) :
子类引用指向父类对象(如Dog d = (Dog) a;),需用instanceof判断避免ClassCastException(如if (a instanceof Dog) { Dog d = (Dog) a; })。 - 好处:提高代码的灵活性和扩展性(如方法参数用父类类型,可接受任意子类对象)。
6. Object 类
- 常用方法 :
equals(Object obj):默认比较对象地址(==),需重写比较内容(如String类重写后比较字符串值)。toString():默认返回类名@哈希码,重写后可返回对象有意义信息(如GeometricObject返回形状描述)。clone():需实现Cloneable接口,重写clone()方法;浅拷贝(基本类型复制值,引用类型复制引用)vs 深拷贝(引用类型也复制新对象)。
第二部分:高频面试考点
1. this 与 super 的区别
- 考点 :
this和super的核心差异是什么? - 答案 :
this指向当前对象 ,super指向父类对象。this用于调用本类成员,super用于调用父类成员。this()和super()都必须在构造器第一行,且不能同时使用。
2. 继承的局限性
- 考点:Java 继承有哪些限制?
- 答案 :
- 单继承:一个类只能继承一个父类(避免多继承的歧义)。
- 方法重写规则:子类方法不能比父类方法更严格(如父类
public,子类不能private)。
3. 多态的实现与风险
- 考点:如何实现多态?向下转型有什么风险?
- 答案 :
- 向上转型:父类引用指向子类对象(自动转换)。
- 向下转型:子类引用指向父类对象(强制转换),需用
instanceof判断,否则可能抛ClassCastException。
4. equals 与 == 的区别
- 考点 :
equals和==有什么不同? - 答案 :
==:比较引用地址(基本类型比较值,引用类型比较地址)。equals:默认比较引用地址 (Object类),需重写后比较对象内容 (如String类重写后比较字符串值)。
5. Object 类的 toString 方法
- 考点 :
toString方法的作用是什么?为什么需要重写? - 答案 :
- 默认返回
类名@哈希码,重写后可返回对象的有意义信息(如GeometricObject返回"这是一个圆形,半径为5"),方便调试和日志输出。
- 默认返回
6. clone 方法的使用
- 考点 :如何使用
clone方法?浅拷贝和深拷贝的区别是什么? - 答案 :
- 需实现
Cloneable接口,重写clone()方法(调用super.clone())。 - 浅拷贝:基本类型复制值,引用类型复制引用(修改引用类型的属性会影响原对象)。
- 深拷贝:引用类型也复制新对象(修改新对象的属性不影响原对象)。
- 需实现
总结
面向对象编程(进阶)的核心是理解 this/super 的作用、继承的机制、多态的实现及 Object 类的常用方法。面试中,这些知识点常以"this 与 super 的区别""多态的向上/向下转型""equals 与 == 的差异"等形式出现,需重点掌握。扎实的基础将为后续学习设计模式、框架开发打下坚实基础。