Java final 关键字详解

tech2022-07-08  169

final 关键字的作用

final 可以用来修饰类、方法和实例域

1.修饰类

final修饰的类不能被任何类继承(final类没有子类)

创建final类Animal

创建Cat类试图继承Animal,编译报错

典型的final类有String类

2.修饰方法

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

创建final修饰的run方法

Cat类试图重写run方法,编译报错

3.修饰属性

构建对象的时候必须初始化final修饰的实例域。也就是说必须保证在每个构造器执行之后,这个域被设置(当然也可以在创建实例域的时候就进行初始化),并且在后面的操作中,不能够再对它进行修改。

public class Animal { private final String name; public Animal(){ name = "dog"; } } public class Animal { private final String name = "dog"; }

既然是不能修改的那set方法自然是不允许的,编译不通过

final修饰符大都应用于基本类型域,或不可变类的域(如果一个类中的每个方法都不会改变其对象,那么这个类就是不可变类。例如String类就是不可变类)。

对于用final修饰可变类(不建议),只是表示存储在变量中的对象引用不会再指向其他对象,换句话说就是存储在变量中的对象地址不变。不过这个对象是可以改变的。例:

public class Animal { private final StringBuilder sb; public Animal(){ sb = new StringBuilder(); } public void test(){ sb.append("test"); } }

以上就是final关键字的三种用法。

最新回复(0)