一、final变量
利用final关键字声明的变量(通常用final声明的变量名需要大写)
● 如果是对于值类型(即八种基本数据类型和String类型),那么只能进行一次赋值,即只能进行一次初始化,在对象进行构建之后不能进行修改,通常final 和 static 在声明变量时一起使用,用来指定一个公共的常量。
实例代码:
这里我们可以看到如果对AGE进行修改时会提示错误。
● 对于引用类型,被引用的对象不能进行重新指向,但是对象里边的数据可以修改
实例代码:
这里可以看出我们不能对它进行重新指向
但是我们可以对这个对象中的属性进行值的修改。
二、final方法
使用final关键字声明的方法可以被子类进行继承但是不能进行修改,即该方法不能被重写。
父类
public class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public final void test() {
System.out.println("test方法");
}
}
子类
public class MainTest extends Employee{
//这里我们无法对父类中的Test方法进行重写
}
三、final类
使用final关键子声明的类不能够被继承,在JDK已经封装好的类中,像一些基本数据类型的包装类和String类都是属于final类。
这里我们声明了一个final类
public final class Employee {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
从这里我们看出无法对该类进行继承。
四、final关键字的好处
● 提高了整体的性能,JVM和Java应用都会缓存final变量
● 可以在多线程的情况下进行共享数据,而不需要额外的同步开销