Java之final

2020-06-14  本文已影响0人  定一

final可以修饰变量、方法、类。

final修饰变量

  1. final修饰成员属性(变量)必须初始化;
  2. 修饰局部变量使用前必须初始化。
class Circle{
    private final int a=1;
    private int b;
    private void f() {
        final int a;
        System.out.println(a);//这样会报错
    }
}
  1. final修饰的变量不能改变,本质来说:不可变的是变量的引用,而不是变量的内容。
  2. final修饰【引用类型】,其指向的对象的数据是可以修改的。但是它的地址不能变,即它不能再指向其它对象。

代码:

public class Test1 {
    private int a = 33;
    public static void main(String[] args) {
         final Test1 test1 = new Test1();
         test1 = new Test1(); //报错,指针不可修改
        test1.a = 44;//对象数据可以修改
    }
}

final修饰方法

  1. 方法不能被子类重写
class Base{
    public final void f(){
    }
}

class Child extends Base{
    public void f(){ //不能重写父类final修饰得方法,编译不通过
    }
}

final修饰类

  1. final修饰的是最终类,不能再被继承了。
这样是错误的
final class Base{
    public final void f(){
    }
}
class Child extends Base{ //不能被继承,父类是final修饰,编译不通过
}
上一篇下一篇

猜你喜欢

热点阅读