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== 的差异"等形式出现,需重点掌握。扎实的基础将为后续学习设计模式、框架开发打下坚实基础。

相关推荐
YYYing.1 分钟前
【C++进阶系列 (一)】关于线程堆栈的那些事 (上篇)
c语言·开发语言·c++·线程堆栈
zh73143 分钟前
Go 1.23 → 1.26 升级检查文档
开发语言·chrome·golang
许彰午3 分钟前
24-MyBatisHelper与autoCount
java·低代码·架构
CRMEB系统商城4 分钟前
汽车养护连锁的数字化底座CRMEB 多门店系统实战方案
java·开发语言·小程序·开源·汽车
学编程就要猛10 分钟前
使用Spring AI配置聊天大模型实现人机交互(初阶)
java·spring ai·advisor·chatclient·chatmodel
努力努力再努力wz11 分钟前
【Redis入门系列】:从 RESP 协议到 redis-plus-plus:Redis 客户端编程与 C++ 接口设计
开发语言·数据库·c++·redis·分布式·缓存·架构
代码不停21 分钟前
子序列问题
java·算法
计算机学姐28 分钟前
基于SpringBoot的高校爱心慈善管理系统
java·vue.js·spring boot·后端·spring·tomcat·mybatis
大梦想家a41 分钟前
基于Servlet+JSP的小区物业管理系统设计与实现(Bootstrap+MySQL)
java·servlet·bootstrap
后台模板学习1 小时前
Rust vs Python 在用户认证模块中的实现:底层
开发语言·python·rust