Java—final关键字

final关键字——终结器

在Java中final被称为终结器,可以使用final来定义类、方法、属性。

一、final修饰类

  • 当一个类被final修饰,表示该类不能拥有子类(该类不允许被继承)
  • 一旦一个类被final修饰,该类的所有方法都会默认加上final(成员变量不会加final)
final class A {}//该类不能拥有子类

Java中的String类以及八大基本数据类型的包装类就是拿final修饰的。

二、final修饰方法

  • 当一个类被final修饰,明确表示该方法不允许被覆写
  • 当一个方法被private修饰后,相当于加了一个final关键字
 class A {
   public final void fun(){}//final修饰方法
}

三、final修饰属性

  • final修饰普通数据类型的成员变量(最主要的用途)
  • 被final修饰的成员变量必须在声明时初始化(构造块或构造方法中初始化),并且初始化后值无法被修改
 class A {
     public final int a = 5;//声明时初始化
     public final int b;
     public final int c;

     public A() {
         b = 10;//通过构造方法初始化
     }

     {
         c = 20;//构造块中初始化
     }
}

那么final与static final有什么区别呢?

    public final int a = 5;
    public static final int b = 10;

final修饰的变量,值不能改变,每个对象都有自己的final变量,并且在对象产生时初始化;
而static final是全局变量,所有对象共享此变量,并且在类加载的时候就初始化了,效率较高,使用的时候,通过类名调用。

四、final修饰引用数据类型的变量

final修饰引用数据类型值不能改变,对于引用数据类型的值就是地址,并不是说他的内容不能改变。

final Person p = new Preson( )

总结:

1、final关键字可以用于成员变量、本地变量、方法以及类。
2、 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
3、 不能对final变量再次赋值。
4、 final方法不能被重写。
5、 final类不能被继承。

发布了38 篇原创文章 · 获赞 37 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Lsxlsxls/article/details/83510848