final到头来也就这么点事儿

大家好,我是方圆
让我们看看final关键字儿


1. 赋值时机

1.1 非静态属性

  • 第一种是在声明的变量后边直接等号赋值
  • 第二种是在构造函数中赋值
  • 第三种是用初始代码块中赋值(第一次见)
public class FinalDemo {
    
    
    //1
    private final int demo = 3;

    //2
    public FinalDemo(int demo) {
    
    
        this.demo = demo;
    }
    
    //3
    {
    
    
        demo = 3;
    }
}

1.2 静态属性

  • 第一种是在声明的时候直接等号赋值
  • 第二种是在静态代码块中赋值
public class FinalDemo {
    
    
    //1
    private static final int demo = 3;

    //2
    static {
    
    
        demo = 3;
    }
}

另外注意,以上是演示代码,final只能赋值一次,这样写仅是为了看起来容易

1.3 局部变量

局部变量的话非常简单,和我们使用普通变量一样,只要在我们使用之前进行赋值就可以


2. final修饰方法

  • 构造方法不能被final修饰
  • 被final修饰的方法不能被重写
  • static修饰的方法也不能被重写哟!!!

3. final修饰类

  • final修饰的类不能被继承,例如我们熟悉的String类就是被final修饰的

4. final修饰属性

  • 被final修饰的基本数据类型不能被改变
  • 被final修饰的引用类型它的引用不能被改变,但是它其中的属性可以进行改变

加油儿!

猜你喜欢

转载自blog.csdn.net/qq_46225886/article/details/108058835