【大白话说Java面试题】【Java基础篇】第35题:怎样声明一个类不会被继承?什么场景下会用

第35题:怎样声明一个类不会被继承?什么场景下会用

📚 回答:

  • 核心概念
    在 Java 中,可以通过在类声明前添加 final 关键字来禁止该类被继承。

1. 声明方式
  • 语法

    java 复制代码
    final class MyClass {
        // 类的内容
    }
    • 加上 final 关键字后,MyClass 将无法被其他类继承。

2. 使用场景
  • 设计意图

    • 如果一个类的设计目标是提供固定的实现,且不允许子类扩展或修改其行为,则可以将其声明为 final
    • 示例:
      • String 类是一个典型的例子,它的内容不可变,且不需要子类扩展。
      • 工具类(如 MathArrays)通常也声明为 final,以确保其方法不会被重写。
  • 性能优化

    • JVM 对 final 类的方法调用可以直接内联优化,提升性能。

3. 注意事项
  • 限制

    • final 类不能被继承,因此不适合需要扩展功能的场景。
    • 如果一个类被声明为 final,则其所有方法默认也是 final,无法被重写。

    💡 面试官视角

  • 面试官可能会问"为什么要将类声明为 final?"答:为了防止类被继承或方法被重写,保证类的行为和实现不被修改,常用于工具类或核心类。

  • 面试官可能会追问"final 类有哪些典型应用?"答:如 StringMath 等类,它们的行为是固定的,不需要也不允许扩展。


📌 专栏 :大白话说Java面试题 --- 01-Java基础篇

相关推荐
折哥的程序人生 · 物流技术专研13 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
GoGeekBaird13 小时前
我开源了 BeeWeave,给 AI Agent 搭一个越用越懂你的知识创作台
后端·github
researcher-Jiang13 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
西门吹-禅15 小时前
java springboot N+1问题
java·开发语言·spring boot
YHHLAI15 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
DLYSB_15 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
skywalk816315 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
weixin_BYSJ198715 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码16 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
犀利豆16 小时前
AI in Harness(四)
人工智能·后端