final 关键字的使用 -- 《JAVA编程思想》20

本文详细解读final关键字在Java中的三种应用:常量定义、对象引用不可变与方法不可重写,以及类的最终限制。了解如何合理使用final提升代码稳定性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

final 关键字相信大家都不会陌生,在项目中常常会看见它的身影。

今天我们就来了解 final 常用的三种修饰场景:数据、方法和类。

一、final 修饰数据

1.final 修饰 String 和其他基本类型数据

数据被定义好之后,是不可被改变的。

    public static final String COLOR_BUlE = "blue";

    public static final int NUMBER = 12;

在这里插入图片描述

final 修饰数据时,通常会与 public static 关键字联用来定义全局常量,表示此数据在程序只仅此一份,常量命名规则为:单词全大写,若有多个单词,中间用下划线隔开。

2.final 修饰对象

被final修饰的对象,不可再变更其引用,但对象内的值是可以进行修改的。

public class Car {

    private String name;

    private String color;

    public Car(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Car{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                '}';
    }

}
    public static final Car car = new Car("cc", "white");

    public static void main(String[] args) {
        System.out.println(car.toString());
        car.setColor("green");
        car.setName("zz");
        System.out.println(car.toString());
    }
Car{name='cc', color='white'}
Car{name='zz', color='green'}

在这里插入图片描述

3.空白 final

所谓空白 final 指被声明为 final 但又未给定初值的域,强制要求在构造方法中或定义时对 final 数据进行赋值,它可确保数据被调用前得到初始化。空白 final 提供了更大的灵活性,使得 final 修饰的数据可以动态变化。

public class FinalDemo {

    private final Car car;

    public FinalDemo(Car car) {
        this.car = car;
    }
}

4.final 修饰方法参数

被修饰的方法参数变为只读对象,无法修改其引用。

在这里插入图片描述

二、final 修饰方法

final 修饰的方法无法被覆盖重写,可以防止继承类修改它的含义。

public class Game {

    private String name;

    public Game(String name) {
        this.name = name;
    }

    public final void startGame() {
        System.out.println("game start");
    }

}

在这里插入图片描述

小知识:所有的 private 方法都隐式地指定为 final 的。由于无法读取 private 方法,所以也就无法覆盖它。

三、final 修饰类

final 修饰的类将不允许任何的类进行继承,表明该类的设计永远不需要任何改动,或者是出于安全方面的考量。

public final class Animal {

    private String name;

}

在这里插入图片描述

final 使用建议:

在使用 final 修饰方法时,可能会妨碍到其他程序员在项目中通过继承来复用你的方法,故在定义 final 方法前,还请认真考虑此方法是否完全不存在复用的可能性。在使用 final 修饰类前,更需慎重考虑,这会导致类中的所有成员和方法都将无法被其他任何类复用,请确认是否真的需要此种效果。

本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。

若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BaymaxCS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值