zoukankan      html  css  js  c++  java
  • final详解

    final的含义?

    final:java中的关键字,意为“终态的”或者“无法改变的”。可用来修饰类、变量、方法。


    变量(成员变量、静态变量、局部变量)

    注意:

    1、final变量即为常量,通常常量名大写。

    2、final成员变量必须在声明时初始化或在构造器中初始化。 

    3、静态final成员变量必须在声明时初始化。

    4、局部变量必须在声明时赋值。

    5、final变量赋值后不能被修改。

    6、final修饰方法中的参数时,参数在方法体中不能重新赋值。

    7、接口中的变量可以不用明确的声明为final,因为变量默认为public static final。

    代码:

    public class ClassA {
        public final String S1 = "this is S1 in ClassA";// 成员变量,声明时初始化
        public final String S2;// 成员变量,在构造器中初始化
        public static final String S3 = "this is S3 in ClassA";// 静态变量
    
        public ClassA() {
            S2 = "this is S2 in ClassA";
        }
    
        public String method1() {
            final String S = "this is method1 in ClassA";// 局部变量
            return S;
        }
    
        public String method2(final String S) {// final修饰方法中的参数
            return S;
        }
    }

    测试1:

    public class MainClass {
        public static void main(String[] args) {
            ClassA a1 = new ClassA();
            System.out.println(a1.S1);// this is S1 in ClassA
            System.out.println(a1.S2);// this is S2 in ClassA
            System.out.println(a1.S3);// this is S3 in ClassA
            System.out.println(a1.method1());// this is method1 in ClassA
            System.out.println(a1.method2("test"));// test
        }
    }

    方法

    注意:

    1、final修饰的方法不能被子类重写。

    2、final不能用来修饰抽象方法。

    代码:

    public class ClassA {
        public final String method1() {
            return "this is method1 in ClassA";
        }
    }

    测试2:

    public class MainClass {
        public static void main(String[] args) {
            ClassA a1 = new ClassA();
            System.out.println(a1.method1());// this is method1 in ClassA
        }
    }

    注意:

    1、final修饰的类不能被继承。

    2、final不能修饰抽象类和接口。

    代码:

    public final  class ClassA {
        public String s1 = "this is s1 in ClassA";
    }

    测试3:

    public class MainClass {
        public static void main(String[] args) {
            ClassA a1 = new ClassA();
            System.out.println(a1.s1);// this is s1 in ClassA
        }
    }
  • 相关阅读:
    织梦内容模型自定义字段设置一个随机数
    网页禁止右键查看源码屏蔽键盘事件
    面试官:如何防止 Java 源码被反编译?我竟然答不上来。。
    Elastic Job 同城主备、同城双活,高可用必备~
    再见,Spring Security OAuth!!
    怎么让 Linux 进程在后台运行?
    30 个 ElasticSearch 调优知识点,都给你整理好了!
    Spring Boot 2.5.4 发布,2.2.x 正式结束使命!
    移动端与服务器端之间的 token 怎么设计?
    最新数据库排行出炉,SQL Server 暴跌。。
  • 原文地址:https://www.cnblogs.com/SQP51312/p/6113381.html
Copyright © 2011-2022 走看看