面向对象实战
掌握了面向对象的基础知识后,还需要一些实战技能来应对真实开发中的挑战。这一部分聚焦于高频面试点和实际编码中容易出错的地方。
克隆与拷贝
Java 中的对象复制不只是 obj.clone() 那么简单。浅拷贝和深拷贝的区别,在涉及嵌套对象时可能导致意想不到的 bug。
详见 克隆与深/浅拷贝。
equals 与 hashCode
这两个方法总是成对出现的。如果两个对象 equals() 返回 true,它们的 hashCode() 必须相同。违反这个约定,HashMap 和 HashSet 可能找不到你刚放进去的对象。
详见 equals 与 == 的对比文档(equals 与 ==)。
toString 与 hashCode 重写
IDE 自动生成的方法未必是最好的。重写这两个方法时,有一些规范需要遵守,否则可能破坏集合类的行为。
设计模式的 OOP 视角
设计模式是面向对象思想的最佳实践。如果你想了解常见设计模式在 Java 中怎么用,可以查看:
- 设计模式 - 完整的设计模式参考
面试准备
面向对象是 Java 面试的重头戏。常见问题包括:
- 三大特性:封装、继承、多态
- 重写 vs 重载
- 抽象类 vs 接口
- this vs super
- 内部类的分类和特点
如果需要系统复习,可以查看 面向对象高频面试题。
学习建议
这部分内容偏实用,建议带着问题来学:
- 被面试官问住了? 先看面试题汇总,再逐个击破
- 写代码时遇到问题? 重点看 equals/hashCode 和 clone
- 想提升代码质量? 仔细阅读设计模式
这部分的文档不会讲太多理论,更多是「避坑指南」和「实战经验」。
