• Silly Java-Final 关键字


    Final 关键字

    • adj. 最终的;最后的;决定性的;不可改变的

    1.修饰变量

    final variable 意味 【最后的变量,不可改变的变量即常量】 Java中该关键字即代表常量

    • 修饰基本类型的变量,在赋初始值之后就不能修改,否则会编译不通过。
    • 修饰引用类型变量,在初始化后不能指向另外的对象,否则会编译不通过。
    • 在给被final修饰的变量赋值的时候,可以在变量声明时赋值,也可以在构造方法中赋值。

    应用场景:用final修饰将变量设置为常量,以后也不打算做修改,一般同static共用。

    // 固定的业务场景代码
    public static final String SERVICE_SCENE_CODE = "-1";
    // 定义存储于Redis中的Key
    public static final String TEST_REDIS_KEY = "TEST_REDIS_KEY_FINAL";

    2.修饰方法

    final method 意味 【最终的方法,不可被改变的方法】Java中该关键字即代表不可被改变的方法,即不能被子类重写,子类不能改变其原有意味。

    • 将一个方法定义为final方法,为了防止任何继承自他的子类修改它的含义。
    • 类的private方法会隐式地被指定为final方法。

    3.修饰类

    final class 意味 【最终的类,不可改变的类】Java中该关键字代表最终类,不能再‘繁衍后代了’即不能被继承。

    • 用final修饰一个类时,表明这个类不能被继承。
    • final类中的成员变量可以根据需要设为final。
    • final类中的所有成员方法都会被隐式地指定为final方法。 
     1 // 被final修饰的class是最终类,不能被继承
     2 public final class FinalClass {
     3     // 被final修饰的常量可以在声明时赋值
     4     private final String str;
     5 
     6     public FinalClass() {
     7         str = "1.被final修饰的变量必须初始化,1.声明时赋值2.构造方法中赋值";
     8     }
     9 
    10     public void testOut() {
    11         System.out.println("3.被final修饰的方法不能被子类重写");
    12     }
    13 
    14     public static void main(String[] args) {
    15         // 1.final变量即最终变量不能被修改
    16         FinalClass finalClass = new FinalClass();
    17         System.out.println(finalClass.str);
    18         // 被final修饰的引用类型变量,初始化后不能指向另一个对象,否则编译不通过
    19         final Object finalObject = new Object();
    20         // 试图修改后编译不通过
    21         finalObject = new Object();
    22         // 2.在变量创建的时候赋值
    23         final String finalStr = "2.被final修饰的变量,再赋值后就是最终变量即常量,不能被修改";
    24         System.out.println(finalStr);
    25         // 3.final修饰的方法是最终方法不能被子类重写修改其意味
    26         finalClass.testOut();
    27     }
    28 }
    29 // 5.不能继承被final修饰的最终类,否则会编译不通过
    30 class CantExtend extends FinalClass {
    31     public String name;
    32     // 4.试图重写父类中被final修饰的方法时会导致编译不通过
    33     public void testOut() {
    34         System.out.println("不能重写父类中final方法");
    35     }
    36 }
  • 相关阅读:
    消息中间件
    swagger2 接口文档,整个微服务接口文档
    Java并发编程笔记之基础总结(二)
    Java并发编程笔记之基础总结(一)
    Python3 web Crawler
    使用JetBrains Intellij IDEA 开发Java EE应用
    用 Tomcat 和 Eclipse 开发 Web 应用程序
    gvim背景配色
    COBOL学习(2)
    如何删除一个顽固的文件(win)
  • 原文地址:https://www.cnblogs.com/lingyejun/p/8646664.html
Copyright © 2020-2023  润新知