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

相关推荐
米糕闯编程2 分钟前
鱼香ros2(十七)C++小海龟巡逻
开发语言·c++·机器人·ros2·服务·小海龟
用户3721574261354 分钟前
如何使用 Java 提取 PPT 中的文字:整份文档、指定幻灯片与表格内容
java
郝学胜-神的一滴10 分钟前
NumPy深度解析|Python数值计算的基石,告别低效for循环
开发语言·人工智能·python·程序人生·numpy·量化投资
ManageEngineITSM19 分钟前
工单优先级怎么定?影响×紧急度矩阵的设计与落地方法
java·大数据·运维·前端·数据库·变更管理
\光辉岁月/27 分钟前
15.JavaSE-网络
java·开发语言·网络
const_qiu28 分钟前
第二章 2.4:搭建 Monorepo 骨架 + 共享包 @autix/contracts
java·人工智能·arcgis
兰亭妙微UI设计公司32 分钟前
兰亭妙微软件界面设计公司的解锁按钮设计10大密码
开发语言·前端·javascript
人邮异步社区38 分钟前
C语言好学,还是Python好学?
c语言·开发语言·python
救救孩子把1 小时前
AI面试八股文-03_3-RAG 系统面试题
人工智能·redis·面试·agent·rag
栈帧之外1 小时前
【C++】红黑树实现
开发语言·c++