【冰啤】final 在 java 中有什么作用?

  1. final修饰类: 表示该类不可以被继承

    1. 如果程序中有永远不会被继承的类的时候 可以使用final关键字进行修饰
    2. final修饰的类的所有成员方法都将被隐式的修饰为final方法
  2. final修饰方法: 表示该方法不能被重写

    使用final关键字修饰方法有两个作用:

    1. 锁定方法 不让任何继承类对其进行修改
    2. 在编译器对方法进行内联 提升效率 但是现在已经很少这么做了 因为现在的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;
        }
    }
    
  3. final修饰变量: 表示变量只能一次赋值 以后值不能被修改(常量)

    final修饰的是一个基本数据类型的数据的时候 这个数据的值在初始化之后将不能改变 当final修饰的是一个引用类型时 引用在初始化之后将永远指向一个内存地址 不可以修改 但是这个内存地址中保存的对象的信息可以修改

final修饰变量的本质: final修饰的变量会指向一块固定的内存 内存地址不能发生改变

1 方法内联

​ 内联概念:把函数调用的方法直接内嵌到方法内部,减少函数调用的次数

2 finalstatic

链接

// String 的源码中写明了一个 char类型的数组 value 同时使用 final关键字修饰
// 这就说明了value的引用是不能发生变化的
	private final char value[];
posted @ 2020-12-24 23:10  白熊冰啤  阅读(136)  评论(0)    收藏  举报