【Java学习】之final关键字详解

🏀🏀🏀来都来了,不妨点个关注!
🎧🎧🎧博客主页:欢迎各位大佬!
在这里插入图片描述

1.final关键字的含义

final意味着 “最终的”,“不可变的”,用于表示修饰的内容是不可变的或者不能重写的。它可以用于类、方法,变量(包括成员变量和局部变量)。

2.final修饰类

当final修饰一个类的时候,表示这个类不能被继承,即不能有子类。
如下代码:

final class A{
    //类的实现
}
// 下面的代码会导致编译错误,因为A是final的
class B extends A{
     // 子类的实现 
}

优点:提高安全性,提高程序的可读性。

3.final修饰方法

当final修饰一个方法时,这个方法不能被重写(override)。这意味着在子类中不能提供一个具有相同签名的方法。这通常用于确保某个方法的行为在继承层次结构中始终如一。但值得注意的是被final修饰的方法不能被重写,但可以重载。

class Parent {  
    final void show() {  
        System.out.println("This is a final method.");  
    }  
    final void show(int x) {
     System.out.println("This is a final method." + x);
    }
}  
  
class Child extends Parent {  
    // 下面的代码会导致编译错误,因为show()方法被声明为final  
    // @Override  
    // void show() {  
    //     System.out.println("This is Child's show method.");  
    // }  
}

优点:提高性能,提高代码的可维护性和可读性。

4.final修饰变量

当final修饰一个变量时,这个变量的值在初始化之后就不能被改变。即为常量,常量名一般全大写,单词之间用下划线分割。对于引用类型的变量,final表示引用本身不可变,而不是它所指向的对象的内容不可变。 final变量必须被初始化。

final int CONSTANT_VALUE = 100; // 常量  
CONSTANT_VALUE = 200; // 这行代码会导致编译错误,因为CONSTANT_VALUE是final的  
  
final StringBuilder s = new StringBuilder("Hello");  
sb.append(" World!"); // 这是允许的,因为sb引用没有改变,只是改变了它指向的对象的内容  
sb = new StringBuilder("Goodbye"); // 这行代码会导致编译错误,因为sb是final的

final声明常量

final常与static和public一起使用来声明常量。这样做的好处:

  • public 表示这个常量可以被其他任何类访问
  • static 表示这个常量不依赖于对象,可以直接通过类名.的方式进行访问
  • final 表示这个常量的值是不可变的
public class Constants {  
    public static final int MAX_VALUE = 100; // 公共静态常量  
}

这样的常量通常用于表示不会改变的值,例如配置参数或数学常量。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值