自学内容网 自学内容网

十分钟带你认识final关键字(快收藏!!)

一、final关键字介绍及引入

 final关键字是Java中的一个保留字,它可以修饰类、方法和变量。当一个类被声明为final时,它不能被继承;当一个方法被声明为final时,它不能被子类重写;当一个变量被声明为final时,它的值只能被赋值一次,之后不能再改变

二、final关键字基本用法 

1. 用来修饰类

声明一个final类

public final class Test {

}

 再写一个继承类Try来继承Test

class Try extends Test{

}

 我们可以看到Test类不能被继承

 删除final则不会报错

final修饰类表明该类不能被继承 

注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写。

final类中的成员变量可以根据需要设为final,但是final类中的所有成员方法都会被隐式地指定为final方法。 在使用final修饰类的时候,一定要谨慎选择,除非这个类以后不会用来继承或者出于安全考虑,尽量不要将类设计为final类。

2. 用来修饰方法

在Test中写一个由final修饰的run方法

public  class Test {
    public final void run(){
        System.out.println("我会跑");
    }
}

 在Try中继承并尝试重写

class Try extends Test{
    public void run(){
        System.out.println("我也会");
    }
}

 重写就报了这样的错,提示要改为非final方法

 

 删除final后报错消失

这就可以看出,被final修饰的方法是不可以被继承的子类所重写的,通俗一点讲就是【子类要老老实实地继承父类的方法,不可以做任何篡改】

3. 用来修饰成员变量
 private final int value;

    public void TestFinalVariable(int value) {
        this.value = value; // 必须在构造函数中进行初始化
    }

    public void print() {
        value = 20; // 错误,final变量的值不能被修改
        System.out.println(value);
    }

 我们可以看到对应报错提示

 当一个成员变量被声明为final时,它的值只能被赋值一次,之后不能再改变。这意味着在构造函数中必须对其进行初始化,并且不能在其他地方进行修改。

4. 用来修饰局部变量

对于局部变量来讲,可以是过程中定义的,也可以是形参变量

当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化

public static void main(String[] args) {
        final int i=15;//初次赋值
        i = 20;//二次赋值失败
        System.out.println(i);
    }

 二次赋值失败

 

删除final二次赋值成功且可以运行 

 

 从代码和运行结果可以得出,不可以做二次赋值

5. 用来修饰方法参数

 定义成用final关键字修饰方法形参,那一定是不可以在方法体中对其进行赋值的,因为你在调用这个方法的时候系统会让你一定要传入参数

 public static void main(String[] args) {
        int i=15;
        System.out.println(i);
    }
    public static void test(final int i){
        i = 20;
        System.out.println(i);
    }

 删除final后即可运行

 

 


原文地址:https://blog.csdn.net/2301_79659699/article/details/140346258

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!