我们一起学猫叫,一起喵喵喵喵喵~~~~~~~

嘿嘿嘿,你们可爱的小北又回来啦

今天我们讲什么呢?看题目就知道啦,我们要研究的就是java中的final关键字

首先上思维导图:

java中被final关键字修饰的变量 java final关键字_java中被final关键字修饰的变量

各位小可爱有木有jio的,今天的内容很少呢!嘿嘿嘿

【1】为什么要用final这个关键字?

原因:由于继承中有一个方法重写的现象(具体方法重写的细节,请参考小北上一篇博客),而有时候我们不想让子类去重写父类的方法,对于这种情况java就给我们提供了一个关键字:final

【2】final概述:final关键字是最终的意思,可以修饰类,变量,成员方法。

【3】final修饰特点:

A:修饰类:被修饰类不能继承

B:修饰方法:被修饰的方法不能重写

C:修饰变量:被修饰的变量不能被重写赋值,因为这个量其实是一个常量

D:修饰基本类型:基本类型的值不能改变

E:修饰引用类型:地址值不能改变

这个时候,有的小可爱可能还不太懂,小北给大家举个例子吧。

public class MyDemo4 {
    public static final int NUMBER=500;//公共的静态常量
    public static void main(String[] args) {
        //final 最终的 可以修饰变量,可以修饰类,可以修饰方法
        // final 修饰变量,变量就称为常量
        //常量:字面值常量,自定义常量 常量的名称字母大写
       final int NUM=100; //自定义常量
        System.out.println(NUM);
        System.out.println(NUMBER);
    }
}

这里的NUM和NUMBER都是被final 修饰的 因此不能被修改

再看一个例子:

这是父类,final修饰了一个方法

public class Fu{
    public void show()    {System.out.println("fushow"); }

    //final 修饰方法后,修饰之后此方法不能被子类重写
    public final void showfinal(System.out.println("fushow"););


}

这是一个子类,是父类的继承类

public class Zi extends Fu{
    
    @Override
    public void show() {System.out.println("子show");}

}

再加一个测试类

public class Test{
    public static void main(String[] args){

    new Zi().showFinal();
    final int num=100;

    //final引用数据类型,指的是这个引用的地址值不能再改变了

    final Zi  zi = new  Zi();
    //zi=new Zi();报错不能再赋值了

}



}

这个时候小北来测试一下:

java中被final关键字修饰的变量 java final关键字_Java_02

如果这个时候,要再给zi 来new一个新Zi的话就会报错了,如下

java中被final关键字修饰的变量 java final关键字_关键字_03

显示final修饰的zi不能再赋新值了。