美文网首页
Java final关键字

Java final关键字

作者: PuHJ | 来源:发表于2018-01-19 15:26 被阅读18次

    三种情况: 数据、方法和类

    1、数据

    当final关键字修饰基本数据时,表达的含义是,永不改变的编译时常量;

    如:final int  data = 1;
    

    修饰对象引用时,它代表的意思是,其对象的引用不变,对象中的内容可以改变;但该引用不可以指向另一个对象

    如:final int[] array = new int[4];
        array[0] = 1;
    
        //下面为错误示例
        int[] array1 = new int[4];
        array = array1;
    

    特殊一点:Java允许生成被声明为final但又未给定初始值的域,但必须在构造器中初始化,如下:

    public class Demo{
            //未赋值
        final int  data;
        Demo(){
            data = 1;
        }
    }
    
    用final修饰方法中参数
    void add(final int  data){}
    

    你可以读参数,但无法修改参数。它主要向匿名内部类传递数据。java是值传递,基本类型改变了值,也只会在局部中生效。引用类型则会对外也产生影响。

    内部类形参必须使用final修饰
    public class OuterClass {
        public void display(final String name){
            class InnerClass{
                void display(){
                    System.out.println(name);
                }
            }
        }
    }
    

    这是因为内部类和外部类需要保持一致,内部类使用name这个变量,是需要copy一份。加入final防止外部改变了其地址,导致数据出现不一致。

    2、方法

    使用final方法的主要原因:锁定方法,防止被继承中的类覆盖修改方法含义。
    private修饰的方法,隐式的指定为final修饰。

    3、类

    即不允许别人继承你的类时,则使用final修饰类。而且final类中的方法也间接地隐式指定为final,无法覆盖。
    比如Java中的String类Integer类等都被指定为final

    相关文章

      网友评论

          本文标题:Java final关键字

          本文链接:https://www.haomeiwen.com/subject/eswooxtx.html