【冰啤】final 在 java 中有什么作用?
-
final修饰类: 表示该类不可以被继承- 如果程序中有永远不会被继承的类的时候 可以使用
final关键字进行修饰 - 被
final修饰的类的所有成员方法都将被隐式的修饰为final方法
- 如果程序中有永远不会被继承的类的时候 可以使用
-
final修饰方法: 表示该方法不能被重写使用
final关键字修饰方法有两个作用:- 锁定方法 不让任何继承类对其进行修改
- 在编译器对方法进行内联 提升效率 但是现在已经很少这么做了 因为现在的
JAVA版本已经将这部分处理得很好了
public class FahterClass { public String name = "父类"; public final int returnOne(){ return 1; } }public class Son extends FahterClass{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } /** * 这个方法会报错 因为在父类中这个方法使用final修饰 不可以在子类进行重写 * @return 1 */ //public int returnOne(){ // //} /** * 这个方法不会报错 属于方法的重载 * 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。 * @param i * @return */ public int returnOne(int i){ return i; } } -
final修饰变量: 表示变量只能一次赋值 以后值不能被修改(常量)当
final修饰的是一个基本数据类型的数据的时候 这个数据的值在初始化之后将不能改变 当final修饰的是一个引用类型时 引用在初始化之后将永远指向一个内存地址 不可以修改 但是这个内存地址中保存的对象的信息可以修改
final修饰变量的本质: final修饰的变量会指向一块固定的内存 内存地址不能发生改变
1 方法内联
内联概念:把函数调用的方法直接内嵌到方法内部,减少函数调用的次数
2
final和static 链接
// String 的源码中写明了一个 char类型的数组 value 同时使用 final关键字修饰
// 这就说明了value的引用是不能发生变化的
private final char value[];

浙公网安备 33010602011771号