当前位置: 首页 > news >正文

Java 入门必学:final、单例、枚举、抽象类、接口

下面给你一套Java 入门→进阶核心五大概念全解析:final、单例、枚举、抽象类、接口,不仅讲“是什么”,更讲“为什么这样设计 + 什么时候用” 👇


一、final 关键字(限制与不可变)

✅ 1️⃣ 修饰变量

finalinta=10;a=20;// ❌ 报错

👉 含义:值不可改变


✅ 2️⃣ 修饰方法

classA{publicfinalvoidtest(){}}classBextendsA{// void test() {} ❌ 不能重写}

👉 含义:禁止子类重写


✅ 3️⃣ 修饰类

finalclassA{}// class B extends A {} ❌

👉 含义:不能被继承


⚠️ 易错点

finalint[]arr={1,2,3};arr[0]=10;// ✅ 可以

👉 结论:

final 限制的是“引用不变”,不是“内容不变”


二、单例模式(设计模式核心🔥)

👉 目的:保证一个类只有一个实例


✅ 1️⃣ 饿汉式(简单安全)

classSingleton{privatestaticfinalSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetInstance(){returninstance;}}

👉 优点:线程安全
👉 缺点:可能浪费内存


✅ 2️⃣ 懒汉式(推荐写法🔥)

classSingleton{privatestaticvolatileSingletoninstance;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){synchronized(Singleton.class){if(instance==null){instance=newSingleton();}}}returninstance;}}

👉 关键点:

  • volatile防止指令重排
  • 双重检查锁(DCL)

✅ 3️⃣ 最推荐:静态内部类(优雅🔥)

classSingleton{privateSingleton(){}privatestaticclassHolder{privatestaticfinalSingletonINSTANCE=newSingleton();}publicstaticSingletongetInstance(){returnHolder.INSTANCE;}}

👉 优点:

  • 线程安全
  • 懒加载
  • 无锁高性能

三、枚举(enum)——比你想的更强大

✅ 基本用法

enumDay{MON,TUE,WED}

✅ 枚举本质

👉 枚举其实是一个类!

Dayd=Day.MON;

✅ 高级用法(带属性)

enumDay{MON("周一"),TUE("周二");privateStringname;Day(Stringname){this.name=name;}publicStringgetName(){returnname;}}

✅ 枚举的优势

👉 替代:

intstatus=1;// ❌ 不安全

👉 推荐:

enumStatus{SUCCESS,FAIL}

四、抽象类(抽象模板)

👉 作用:定义“规范 + 部分实现”


✅ 定义

abstractclassAnimal{abstractvoideat();// 抽象方法voidsleep(){System.out.println("睡觉");}}

✅ 子类实现

classDogextendsAnimal{voideat(){System.out.println("吃骨头");}}

⚠️ 特点

  • 不能实例化
  • 可以有普通方法
  • 可以有构造方法

五、接口(Interface)——规范的极致

👉 作用:定义“能力”


✅ 基本写法

interfaceFlyable{voidfly();}

✅ 实现接口

classBirdimplementsFlyable{publicvoidfly(){System.out.println("飞行");}}

✅ 新特性(Java 8+)

interfaceA{defaultvoidtest(){System.out.println("默认方法");}staticvoidhello(){System.out.println("静态方法");}}

六、抽象类 vs 接口(核心对比🔥)

对比点抽象类接口
关键字abstract classinterface
方法可有实现默认抽象
变量普通变量public static final
继承单继承多实现
构造方法

七、五者关系总结(精华🔥)

👉 可以这样理解:

  • final→ 限制(不能改/不能继承)
  • 单例→ 控制对象数量
  • 枚举→ 固定常量集合(更安全)
  • 抽象类→ “是什么”(is-a)
  • 接口→ “能做什么”(can-do)

八、经典组合(面试常考)

⭐ 枚举实现单例(最优解🔥)

enumSingleton{INSTANCE;publicvoiddoSomething(){System.out.println("执行");}}

👉 优点:

  • 线程安全
  • 防反射
  • 防序列化破坏

九、学习路线建议(很重要)

👉 建议掌握顺序:

  1. final(基础)
  2. 接口(最常用)
  3. 抽象类(理解设计)
  4. 枚举(规范代码)
  5. 单例(设计模式)

总结一句话

接口定能力,抽象类做模板,枚举管常量,单例控实例,final保约束


如果你想继续深入,我可以帮你👇
✅ 出一套「面试高频考题(final/接口/单例)」
✅ 或做「设计模式入门(含代码实战)」
✅ 或带你写一个“小项目综合应用这些知识点”

http://www.jsqmd.com/news/498930/

相关文章:

  • 乙巳马年春联生成终端开发者案例:接入微信公众号菜单快捷入口
  • 【OpenClaw 全面解析:从零到精通】第003篇:OpenClaw 技术依赖与生态栈详解
  • PaddlePaddle-v3.3镜像体验:无需配置,直接上手目标检测项目
  • Z-Image-Turbo_UI界面实战体验:生成你的第一张AI头像
  • 解放 OpenClaw!cpolar 穿透让本地 AI 突破空间限制
  • AI教材生成新趋势:高效工具助力,低查重教材信手拈来!
  • Clawdbot+Qwen3:32B部署教程:从零搭建Web网关直连聊天服务
  • AIVideo在智能家居中的创新应用:家庭视频日志
  • 手把手教你用ONNX Runtime部署YOLO11:含NMS配置与C++推理优化
  • SmolVLA与ComfyUI工作流整合:可视化AI应用开发指南
  • Spring中的控制反转(IoC)和依赖注入(DI)
  • Anaconda环境管理:为Qwen-Image-Edit-F2P创建独立的Python运行环境
  • 5步搞定雪女-斗罗大陆-造相Z-Turbo:开箱即用的AI绘画工具
  • AI辅助调试:10分钟定位复杂Bug的实战技巧
  • Hugo PaperMod多语言博客搭建完整指南:快速实现国际化内容展示
  • 2026年吉林白石材采购决策指南:五大核心服务商深度解析与战略选择 - 2026年企业推荐榜
  • YOLOv9训练推理镜像实测:无需配置环境,小白也能快速上手目标检测
  • AUTOSAR从入门到精通-【自动驾驶】毫米波雷达与激光雷达对比自动驾驶感知核心传感器解析
  • 雪女-斗罗大陆-造相Z-Turbo技术原理可视化:用信息图展示其Diffusion生成过程
  • 基于Cobbler的系统自动化安装部署——原理
  • 2026园艺育苗优质孵化蛭石推荐榜:保温蛭石/园艺珍珠岩/园艺蛭石/大颗粒珍珠岩/憎水珍珠岩/珍珠岩保温板/珍珠岩防火板/选择指南 - 优质品牌商家
  • GitHub 协作开发:为 Lingbot 模型贡献数据处理工具
  • UE5登录界面UI设计全流程:从零到可交互的完整实现(含正则校验与MD5加密)
  • AcousticSense AI实战案例:如何用AI整理个人音乐库
  • Qwen3-Embedding-4B多场景落地:电商商品描述语义去重与归类实战
  • 2026年吉林白麻采购指南:五大实力厂家深度解析与选型策略 - 2026年企业推荐榜
  • StructBERT零样本分类-中文-base中小团队首选:无ML工程师也能维护的AI分类服务
  • 多平台抢码降延迟浏览器插件|支持原神/王者/吃鸡等热门游戏直播秒抢
  • Swift-All短序列训练实战:5分钟学会省下80%显存的微调技巧
  • 2026年评价高的回收品牌推荐:西安红木家具回收综合评价公司 - 品牌宣传支持者