07、Java 基础硬核复习:面向对象编程(进阶)的核心逻辑与面试考点

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. thissuper 的区别

  • 考点thissuper 的核心差异是什么?
  • 答案
    • 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 类的常用方法。面试中,这些知识点常以"thissuper 的区别""多态的向上/向下转型""equals== 的差异"等形式出现,需重点掌握。扎实的基础将为后续学习设计模式、框架开发打下坚实基础。

相关推荐
曾卫2 小时前
java.lang.*中Class 源代码详解【五】
java·源码
钱多多先森2 小时前
【Dify】使用 python 调用 Dify 的 API 服务,查看“知识检索”返回内容,用于前端溯源展示
开发语言·前端·python·dify
qq_417129252 小时前
基于C++的区块链实现
开发语言·c++·算法
霍理迪2 小时前
JS—数组
开发语言·前端·javascript
Ulyanov2 小时前
超越平面:用impress.js打造智能多面棱柱演示器
开发语言·前端·javascript·平面
2401_832402752 小时前
C++中的命令模式实战
开发语言·c++·算法
zhougl9962 小时前
Java定时任务实现
java·开发语言·python
历程里程碑2 小时前
Linux 10:make Makefile自动化编译实战指南及进度条解析
linux·运维·服务器·开发语言·c++·笔记·自动化
2601_949575862 小时前
Flutter for OpenHarmony艺考真题题库+个人信息管理实现
java·前端·flutter