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

相关推荐
杨航 AI13 分钟前
JEV的用法
java·前端·数据库
灿飞26 分钟前
Kotlin与Java虚拟机七:空安全:把十亿美元的错误消灭在类型系统里
java·kotlin
知识搬运临时工36 分钟前
JVM 删掉偏向锁之后,一次无竞争锁从 0.3 纳秒变成 5.4 纳秒
java
IT枫斗者枫哥40 分钟前
用了BigDecimal还差一分?用四组Java代码查清原因
java·后端
一条泥憨鱼1 小时前
【消息队列】ACK确认了什么:消息队列可靠投递的完整链路
java·后端·kafka·消息队列·rabbitmq
yangmu32031 小时前
编程语言发展简史:从机器指令到智能协作
开发语言
从琳开始9892 小时前
网络原理入门(二)------OSI七层模型?TCP/IP五层(四层)模型原来是这样的
java·网络·tcp/ip·java-ee·php
文丑颜不良啊2 小时前
LeetCode1861~1880题目解析
java·leetcode
Flynn Liang2 小时前
AgentScope Java 深度解析:ReActAgent、HarnessAgent 与多智能体编排——JVM 上的自治 Agent 底座
java·大模型·架构设计·ai agent·spring ai·langchain4j·agentscope
Flynn Liang2 小时前
上线后怎么排查 AI 调用?Spring AI Observability:token/延迟/成本埋点与全链路追踪
java·人工智能·spring·监控·可观测性·observability·springai