云计算百科
云计算领域专业知识百科平台

趣味JAVA:当 final 关键字遇上小区超市:那些 “说一不二“ 的规矩

目录

一、final 变量:贴在价签上的价格 —— 改不了!

二、final 方法:祖传的收银流程 —— 动不得!

三、final 类:独门配方的辣椒酱 —— 抄不走!

四、final 的 "死规矩" 也有灵活处


小区超市的王老板最近在店里贴了一堆告示:"特价鸡蛋每人限购 3 斤,概不还价"、"收银台备用金仅限找零,不准挪用"。员工小李嘟囔:"这规矩也太死了",王老板眼一瞪:"这叫 'final',懂不懂?"

一、final 变量:贴在价签上的价格 —— 改不了!

王老板的价签是出了名的 "一言九鼎"。上次有顾客想让他把 "5.99 元 / 斤" 的苹果改成 "5.5 元",王老板指着价签说:"这价签是 final 的,改不了!"

// 就像王老板的价签
final double APPLE_PRICE = 5.99;

// 顾客想砍价
// APPLE_PRICE = 5.5; // 编译报错:这价改不了!

但王老板也不是完全死板。新进的香蕉还没定价,他会先写个 "待定价",等核算完成本再填:

// 先声明,后定价(构造器里赋值)
final double BANANA_PRICE;

// 进货后算好价格
public Supermarket() {
BANANA_PRICE = 3.99; // 这次定了就不能改了
}

段子解读:final 变量就像超市里贴死的价签,一旦写上数字(初始化),谁来都改不了。但可以先贴个空签(声明时不赋值),等算好账再填(构造器或静态代码块赋值),填完照样不能改。

二、final 方法:祖传的收银流程 —— 动不得!

王老板他爹传下来一套收银流程:"先扫码、再装袋、最后报金额",谁都不能改。小李想试试 "先装袋再扫码",被王老板一顿骂:"这是 final 方法,动不得!"

class OldBoss {
// 祖传收银流程(final方法)
final void checkout() {
System.out.println("1. 扫码 2. 装袋 3. 报金额");
}
}

class YoungBoss extends OldBoss {
// 想改祖传规矩?
// @Override
// void checkout() { // 编译报错:这流程改不了!
// System.out.println("1. 装袋 2. 扫码…");
// }
}

段子解读:final 方法就像老祖宗定下的规矩,子类(后代)只能照着做,不能瞎改。王老板说这是为了 "保证质量"—— 万一改乱了流程,多收钱少收钱都麻烦。

三、final 类:独门配方的辣椒酱 —— 抄不走!

王老板的秘制辣椒酱火了,有人想拜师学艺开分店,王老板摆摆手:"这配方是 final 类,不外传!"

// 秘制辣椒酱配方(final类)
final class SecretChiliSauce {
void make() {
System.out.println("独家配方:辣椒+八角+神秘调料");
}
}

// 想山寨?没门!
// class CopycatSauce extends SecretChiliSauce { // 编译报错:抄不了!
// }

段子解读:final 类就像独门秘方,不准别人继承(山寨)。Java 里的 String 类就是 final 的,保证了字符串一旦创建就不能被修改,不然你发的消息被人中途改了可就麻烦了。

四、final 的 "死规矩" 也有灵活处

别看王老板规矩多,他也懂变通:

  • final 数组:仓库里的 "应急物资箱" 是 final 的(不能换箱子),但里面的东西能换(数组内容可改)

    final String[] EMERGENCY_BOX = {"创可贴", "碘伏"};
    EMERGENCY_BOX[0] = "绷带"; // 可以换里面的东西
    // EMERGENCY_BOX = new String[]{"…"}; // 不能换箱子本身

  • final 参数:顾客说 "买 3 斤苹果",称重时不能偷偷改成 5 斤(方法参数加 final,防止被篡改)

    void sellApple(final int weight) {
    // weight = 5; // 编译报错:不能多卖!
    System.out.println("卖出" + weight + "斤苹果");
    }

  • 王老板的总结:"final 这东西,就像超市的规矩 —— 该死板的地方必须死板(比如价格、配方),该灵活的地方也得灵活(比如应急箱里的东西)。守住底线,生意才能长久!"

    其实 Java 里的 final 也是这个道理:用它来保护那些不能改的核心内容(常量、关键方法、安全类),让代码像超市一样井井有条,少出乱子。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 趣味JAVA:当 final 关键字遇上小区超市:那些 “说一不二“ 的规矩
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!