零基础学Java—final关键字与四种用法(二十九)

Posted 王同学要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础学Java—final关键字与四种用法(二十九)相关的知识,希望对你有一定的参考价值。

【零基础学Java】—final关键字与四种用法(二十九)

一、final关键字

final关键字代表最终、不可改变的

常见的四种用法:

  • 可以用来修饰一个类
  • 可以用来修饰一个方法
  • 可以用来修饰一个局部变量
  • 可以用来修饰一个成员变量

(一)、final关键字用来修饰一个类

格式:
 public  final class 类名称 
 // …………
  

含义:当前这个类不能有任何的子类

注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子)

/*
注意:一个类如果是final的,那么其中所有的成员方法都无法
 */
public final class DemoFinal /*extends  Object*/
    public void method()
        System.out.println("方法执行");
    



//不能使用一个final类来作为父类
public class MySon /*extends DemoFinal*/



(二)、final关键字可以用来修饰一个方法

  • 当final关键字用来修饰一个方法的时候,这个方法就是最终的方法 也就是不能被覆盖和重写
格式:
修饰符 final 返回值类型 方法名称(参数列表)
方法体;

注意:对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾

(三)、final还可以用来修饰局部变量

  • final还可以用来修饰局部变量,那么这个变量就不能进行更改,一次赋值,终生不变
  • 对于基本类型来说 不可变是说的变量当中的数据不可变
  • 对于引用类型来说,不可变说的是变量当中的地址值不可改变
public class demo02 
    public static void main(String[] args) 
        int num1=10;
        System.out.println(num1);//10

        num1=20;
        System.out.println(num1);//20

        //一次赋值,终生不变
        final int num2=100;
        System.out.println(num2);//100

       // num2=100;错误写法

        //正确写法 只要保证有唯一一次赋值即可
        final  int num3;
        num3=30;
        System.out.println(num3);//30
        //对于基本类型来说 不可变是说的变量当中的数据不可变
        //对于引用类型来说,不可变说的是变量当中的地址值不可改变

        Student stu1=new Student("张三");
        System.out.println(stu1);
        System.out.println(stu1.getName());//张三

        stu1=new Student("李四");//李四
        System.out.println(stu1);
        System.out.println(stu1.getName());

        final   Student stu2=new Student("王五");
        //错误写法啊,final的引用类型变量 其中的地址不可改变
       //stu2=new Student("王嘉尔");
        System.out.println(stu2.getName());
        stu2.setName("王嘉尔");
        System.out.println(stu2.getName());
    

(四)、final关键字可以用来修饰一个成员变量

  • 对于成员变量来说,如果使用final关键字,那么这个变量也照样是不可变的
  • 对于成员变量具有默认值,所以使用了final之后必须手动赋值,不会再给默认值了
  • 对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值(二者选择其一)
  • 必须保证类当中的所有的重载的构造方法都会对final的成员变量进行赋值

以上是关于零基础学Java—final关键字与四种用法(二十九)的主要内容,如果未能解决你的问题,请参考以下文章

7天学完Java基础之6/7

零基础学Java—抽象方法和抽象类(二十二)

final关键字

Java学习笔记之二十final关键字在Java继承中的用法小结

零基础学Java—发红包案例(二十三)

零基础学Java—finally代码块(四十七)