面向对象的三大特性是什么分别有什么作用三大特性封装、继承、多态。① 封装将数据和操作数据的方法绑定在一起通过访问修饰符隐藏内部实现细节只暴露必要的接口。核心目的高内聚、低耦合。例如将类的属性设为 private提供 public 的 getter/setter 方法可以在 setter 中加入校验逻辑而不影响调用方。② 继承子类通过extends关键字获得父类的属性和方法实现代码复用和is-a 关系。Java 只支持单继承一个类只能有一个直接父类但支持多层继承。所有类默认继承 Object。③ 多态同一个行为具有多个不同表现形式或形态的能力。编译时多态方法重载和运行时多态方法重写 父类引用指向子类对象。核心条件继承 重写 父类引用指向子类对象向上转型。2方法重载Overload和方法重写Override的区别对比维度方法重载Overload方法重写Override发生位置同一个类中父子类之间方法签名方法名相同参数列表不同方法名、参数列表完全相同返回类型可以不同相同或其子类协变返回访问修饰符无限制不能比父类更严格异常无限制不能抛出比父类更宽泛的检查异常绑定时机编译时绑定静态多态运行时绑定动态多态关键记忆点重载——同一个类方法名相同参数不同重写——父子类一模一样子类修饰符不缩小、异常不扩大、返回值同或子。注意static 方法不能被重写可以被隐藏final/private 方法不能被重写。Override 注解帮助编译器检查。3抽象类和接口有什么区别含 JDK8 新特性对比维度抽象类接口关键字abstract classinterface继承单继承 extends多实现 implements支持多继承构造方法有无成员变量无限制只能 public static final 常量普通方法可以有具体方法JDK8default/static 方法JDK9private 方法设计理念is-a 关系模板设计has-a / can-do 能力行为规范JDK8 接口新特性default 方法有方法体实现类可以直接用或重写。解决接口增加方法所有实现类都要改的痛点。static 方法通过接口名直接调用实现类不能继承。JDK9 private 方法抽取 default/static 方法中的公共代码。4面向过程和面向对象的区别是什么对比维度面向过程POP面向对象OOP核心思想以函数/过程为单位自顶向下逐步细化以对象为单位数据行为封装一体数据与操作分离数据全局传递绑定在对象内通过方法操作代码复用函数调用继承、组合扩展性修改成本高牵一发动全身开闭原则对扩展开放对修改关闭代表语言C、PascalJava、C、Python 面试加分句面向过程强调怎么做算法 数据结构面向对象强调谁来做对象 消息传递。面向对象更符合人类思维习惯适合大型复杂系统面向过程适合简单、流程明确的场景。现代 Java 也融合了函数式编程Lambda/Stream并不是非此即彼。点击下方小卡片免费获取Java资料Java资料https://mp.weixin.qq.com/s/iBmSycbmeTCSRNKJQ10EuA5多态的实现原理是什么向上转型和向下转型有什么注意事项① 多态实现原理JVM 层面编译时多态重载编译器根据参数列表在编译阶段确定调用哪个方法——静态分派。运行时多态重写JVM 在运行期间通过动态分派根据对象的实际类型而非引用类型查找方法表决定调用哪个方法。底层依赖虚方法表vtable。② 向上转型Upcasting子类对象赋值给父类引用Animal a new Cat();——自动、安全但丢失了子类特有的方法。③ 向下转型Downcasting父类引用强转为子类类型Cat c (Cat) a;——必须显式强转不安全可能抛出ClassCastException。建议用instanceof先判断再转型。JDK16 支持模式匹配简化写法。6构造方法有哪些特点构造方法能否被重写构造方法核心特点方法名必须与类名完全相同没有返回类型连 void 都不能写用new关键字调用不能像普通方法那样直接调用如果不写编译器自动提供无参默认构造方法如果写了有参构造默认无参构造不再自动生成需要手动编写子类构造方法的第一行默认都会调用 super()父类无参构造也可以显式指定 super(arg) 或 this(arg)递归调用构造方法是编译错误 关键结论构造方法不能被重写Override因为构造方法不属于类的成员方法子类不会继承父类的构造方法。但构造方法可以被重载Overload——同一个类中可以有多个参数不同的构造方法。7this 和 super 关键字的作用和区别维度thissuper指向当前对象的引用父类对象的引用访问成员this.属性 / this.方法()super.属性 / super.方法()访问父类被覆盖的成员构造方法this() 调用本类其他构造方法super() 调用父类构造方法位置要求构造方法第一行构造方法第一行互斥关系this() 和 super()不能同时出现常见使用场景this区分成员变量和局部变量如构造方法中 this.name name、链式调用返回 this、构造方法间互相调用。super子类重写方法后仍想调用父类版本、子类构造中调用父类构造。static 方法中不能用 this 和 super因为没有实例上下文。8Java中有哪些内部类各自的特点和使用场景类型位置static场景成员内部类类中方法外可选类与外部类强关联如 Body.Heart静态内部类类中方法外 static必须独立于外部类实例如 Builder 模式、Map.Entry局部内部类方法/代码块内不能仅在某个方法中使用作用域极小匿名内部类表达式/参数中不能一次性使用如事件监听、Runnable、Comparator 面试核心要点成员内部类 vs 静态内部类前者持有外部类引用后者不持有不导致外部类无法 GC。能用静态内部类尽量用静态。匿名内部类只能访问final或 effectively final的局部变量。JDK8 后用 Lambda 代替更简洁。权限内部类编译后生成单独的 .class 文件如 Outer$Inner.class。JVM 层面没有内部类概念是编译器的语法糖。9Java四种访问修饰符的作用范围分别是什么修饰符本类同包子类同包非子类不同包子类不同包非子类private✓✗✗✗✗default无修饰✓✓✓✗✗protected✓✓✓✓✗public✓✓✓✓✓ 速记口诀范围从小到大private → default → protected → public私有、默认包级、保护子类、公开所有人别踩坑类外部类只能用public或默认修饰不能用 private/protected。接口的成员变量默认 public static final方法默认 public abstract。不同包子类中protected 只能通过继承访问不能通过父类实例访问。10深拷贝和浅拷贝有什么区别Java中如何实现① 区别对比维度浅拷贝Shallow Copy深拷贝Deep Copy基本类型字段复制值复制值引用类型字段复制引用地址共享同一对象创建新对象并递归复制独立性修改会互相影响引用字段完全独立性能快慢尤其嵌套深时② 实现方式浅拷贝实现Cloneable接口重写clone()调用super.clone()。深拷贝方式一——clone() 中递归克隆引用字段方式二——序列化/反序列化推荐无需递归处理借助 ObjectOutputStream/ObjectInputStream 或 JSON 序列化工具如 Gson、Jackson方式三——拷贝构造方法或工厂方法。 别踩坑Object 的 clone() 是protected native需要实现 Cloneable 并重写为 public。不实现 Cloneable 直接调用 clone() 会抛 CloneNotSupportedException。序列化深拷贝要求对象及其所有引用字段都实现Serializable且可能触发循环引用问题注意 transient 字段。集合框架中Arrays.copyOf() / List.copyOf() 对元素是浅拷贝。总结面向对象是 Java 面试的必考板块也是写高质量代码的基础。10道题目覆盖了三大特性封装、继承、多态概念 原理方法重载 vs 重写、构造方法、this/super设计抽象类 vs 接口含 JDK8、面向过程 vs 面向对象细节内部类、访问修饰符、深拷贝浅拷贝由于篇幅有限更多详情更有Java免费资料点击下方小卡片获取Java资料https://mp.weixin.qq.com/s/iBmSycbmeTCSRNKJQ10EuA