Java中的final关键字

Java中的final关键字

final在Java中是一个保留关键字,可以用来声明成员变量、方法、类以及本地变量。用final声明的变量,将不能改变这个引用,否则编译器会报错。


final的几种用法

1. 修饰一个类(无法被继承)

final修饰一个类的格式:
public final class 类名称{
//方法体
}
这个类不能含有任何的子类
//一个子类如果是final的,那么其中所有的成员方法都无法进行覆盖复写(因为final修饰的类没有子类)
final class A{
    //A 是没有子类的
}
class B extends A{
    //错误的, 无法从最终类A进行继承
    //B类继承A类 相当于对A类功能进行扩展
    //如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类
}

2. 修饰一个方法(无法被覆盖,重写)

final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写
 格式:
修饰符  final 返回值类型 方法名称(参数列表){
 //方法体
 }
 对于子类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。
class C{
    public final void Test1(){
       System.out.println("This is final")
    } 
}
class D extends C{
 //错误,无法覆盖
 /*   public void Test(){
     System.out.println("This is final")
    } */
}

3. 修饰一个局部变量(只能赋一次值)

一旦使用final用来修饰局部变量,那么这个变量就不能进行更改
“一次赋值,终生不变”
//对于基本类型来说,不可改变的是变量当中的数据不可改变
//对于引用类型来说,不可改变说的是变量当中的地址值不可改变
public class Test2{
    public static void main(String[]args){
        //局部变量
        int i=100;
        //重新赋值
        i=200;
        
        // 再定义一个局部变量 
        final int k=100;
        //重新赋值
        //错误: 无法为最终变量k分配值
       // k=300;
    }
}

4. 修饰一个成员变量(必须手动赋值)

一般情况下
实例变量如果还没有赋值的话,系统会赋默认值

final修饰实例变量:
系统不负责赋默认值,要求程序员必须手动赋值,只能赋一次,
这个手动赋值,在变量后面赋值可以,在构造方法中赋值也可以

在变量后赋值:

public class Test3 {
private final String name = "LeBron";
public Person() {
}
public Person(String name) {
    this.name = name;
} 
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
}

在构造方法中赋值:

public class Test4 {
private final String name;
public Person() {
    name = "LeBron";
}
public Person(String name) {
    this.name = name;
} 
public String getName() {
    return name;
}
/*public void setName(String name) {
    this.name = name;
}*/
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值