java面向对象——final修饰词

在Java中,`final` 是一个关键字,用于限制某些特性,确保不可改变性。可以用在类、方法和变量上,具体如下:

 1. `final` 类
当类被声明为 `final` 时,该类不能被继承。也就是说,不能有子类扩展这个类。这在需要保护设计和实现安全的情况下非常有用。例如:

```java
final class FinalClass {
    // 成员变量和方法
}

// 以下代码会报错
class SubClass extends FinalClass {
    // 编译错误: Cannot subclass the final class FinalClass
}
```

2. `final` 方法
如果一个方法被声明为 `final`,则该方法不能在任何子类中被重写。这保证了父类中的方法行为不会被修改。

class Parent {
    public final void display() {
        System.out.println("This is a final method.");
    }
}

class Child extends Parent {
    // 以下代码会报错
    @override
    public void display() { // 编译错误: Cannot override the final method from Parent
        System.out.println("Trying to override.");
    }
}

3. `final` 变量


当一个变量被声明为 `final`,它的值在赋值后不能更改。

  • 对于final修饰的基本类型变量,变量存储的数据不能改变
  • 对于final修饰的引用数据变量,变量存储的地址不能改变,但地址所指向对象的内容可以改变
final int CONSTANT = 10; // 基本数据类型
// CONSTANT = 20; // 编译错误: Cannot assign a value to final variable CONSTANT

final List<String> myList = new ArrayList<>();
myList.add("Hello"); // 这是允许的,因为我们没有更改引用
// myList = new ArrayList<>(); // 编译错误: Cannot assign a value to final variable myList

4.‘final’常量 

public class Constants {  
    public static final int MAX_USERS = 100;  
    public static final String APP_NAME = "MyApplication";  
    MAX_USERS = 200;  // 编译错误
}

特性

  • 不可变性:一旦被赋值,final常量的值就不能再被修改。比如,尝试这样做会导致编译错误:

  • 静态常量:通常,final常量会与static关键字结合使用,意味着常量属于类而不是类的实例。这样可以直接通过类名访问

  • 大写命名:常量通常使用大写字母命名,以便于识别。

优点

  • 使用常量记录系统配置信息的优势、执行原理
  • ·代码可读性更好,可维护性也更好。
  • ·程序编译后,常量会被“宏替换”:出现常量的地方全部会被替换成其记住的学面量,
  • 这样可以保证使用常量和直接用字面量的性能是一样的。

使用场景

  1.  **`final` 类**: 确保类不能被扩展,常用于设计安全性和稳定性(例如 `String` 类)。
  2.  **`final` 方法**: 保证一种特定方法的行为不被改变。
  3.  **`final` 变量**: 定义常量,增强代码可读性和安全性,不允许值被更改。

注意事项

  1.  `final` 关键字仅影响变量、方法、类的可变性;并不影响对象内部状态的可变性。
  2.  在编程中,合理使用 `final` 可以帮助实现更高的安全性和更好的设计。
  3. final放的位置和static同等,如:public final。
     
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值