final 关键(基础篇)

151 阅读1分钟

final关键字主要用在三个地方:变量方法.

  1. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦初始化之后就无法修改; 如果是引用类型变量,则对其初始化之后就不能再让其指向另外一个对象,但该引用所指向的对象的内容是可以发生变化的。
public class Test {
    private final int i = 0;
    public Test(){
        i = 1; //错误

        final Object obj = new Object();
        obj = new Object(); //错误

    }
}
  1. 当用final修饰一个类时,表名这个类不能被继承。final类中所有的成员方法都会被隐士地指定为final方法。
final public class Animal {
    public Animal(){
        
    }
}
public class Dog extends Animal { 

}

3. 使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承修改它的含义;第二个原因是效率。在早期java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final

public class Animal {
    public Animal(){

    }
    /**
     * 因为private修饰,子类中不能继承到此方法,因此,子类中的getName方法是重新定义的、
     * 属于子类本身的方法,编译正常
    private final void getName(){

    }
    */

    /* 因为pblic修饰,子类可以继承到此方法,导致重写了父类的final方法,编译出错
     */
    public final void getName(){

    }

}
public class Dog extends Animal {
    public void getName(){

    }
}

如有错误,欢迎指出

学习来源