Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Java 基础

120 道题目
我的收藏与复习
题干与完整题解免费阅读第 8 / 12 页

答:面向对象是把状态和相关行为组织到对象中,让对象通过明确的接口协作。类描述一种对象的结构与规则,实例保存各自的状态。Java 常用封装保护状态,用继承表达合适的类型关系,用多态让调用方依赖协议而不是某个具体实现。

专注学习

答:抽象关注“对外提供什么能力”,封装关注“状态和实现怎样受到保护”。抽象帮助调用方只面对必要的概念;封装让对象通过受控操作维持规则。接口、抽象类常用于抽象,访问修饰符和防御性复制常用于封装,但二者都不能只用某个关键字来定义。

专注学习

答:static 成员属于类,不依赖某个当前实例。静态方法不能被重写,子类声明相同签名的静态方法通常构成隐藏;父类 private 方法不被子类继承,因此也谈不上重写。子类可以声明同名方法,但必须区分它与父类方法是否存在覆盖关系。

专注学习

答:静态方法可以通过明确的对象引用访问允许访问的实例变量,但不能不指明对象就直接使用实例字段或 this。原因是调用静态方法时不一定存在任何实例,更没有自动绑定的“当前对象”。限制的是缺少接收对象的直接访问,不是禁止静态代码与实例交互。

专注学习

答:重载是在同名方法之间使用不同参数列表,编译器按参数的编译期类型等规则选择方法;重写是子类型为继承的实例方法提供新实现,调用时通常按实际对象选择实现。只改返回类型不能构成重载,重写也不能随意缩小访问权限或扩大受检异常范围。

专注学习

答:构造器用于初始化新实例,没有返回类型,名字与类名相同。一个类可按不同参数列表声明多个构造器,这叫构造器重载。所谓复制构造器通常只是接收同类型对象的普通构造器;Java 不会自动生成 C++ 式的复制构造器,也不会替你决定复制深度。

专注学习

答:一个 Java 类只能直接继承一个类,但可以实现多个接口;一个接口也可以继承多个接口。因此,Java 不支持多重类继承,却支持通过多个接口建立多种子类型关系。接口可以包含 default 方法,所以还必须说明多个默认实现发生冲突时怎样解决。

专注学习

答:接口主要定义可由不同类型实现的能力或协议,一个类能实现多个接口;抽象类适合共享实例状态、构造约束及一部分实现,一个类只能直接继承一个类。Java 21 的接口还能有 default、static、private 方法,因此“接口只能声明抽象方法”已经过时。

专注学习

答:这些关系最终常以引用和方法调用实现,但区别靠业务约束落实:普通关联允许对象相互协作;聚合保留部件独立存在或共享的能力;组合需要限制部件归属,让整体负责部件的创建、变更和移除。字段的类型、final 修饰或 new 的位置都不能单独证明关系。

专注学习

答:封装应让对象通过少量明确的操作维持自身规则。把不应由外部随意改变的状态隐藏起来,构造时检查必要条件,修改时校验业务约束,并避免泄露可变内部对象。private 是工具,关键是调用者能否绕过规则,而不是字段前面有没有某个修饰符。

专注学习
本页 10 道,共 120 道浏览其他领域