final关键字在java中的应用十分的频繁,而且就我个人而言,我容易把它和static这个关键字混淆,下面来总结一下他的应用范围。
final关键字的基本用法
1、修饰类
凡是被final修饰的类,都是不可以被继承的。如果你有一个需求,需要定义一个类,而这个类不允许被其他类继承的时候,你就可以通过final关键字来实现。请看下面这个例子。
public final class Person {
String name;
int age;
}
我定义了一个final修饰的类Person,接下来我创建一个Student类继承这个类让他继承Person类看看效果。
你的IDE就会给你报错。无法通过编译。
2、修饰变量
用final修饰的过的变量是无法在后续的操作中改变其值的,所谓的变量也就是带有名字的常量而已。
概念联系
常量可以分为:字面值常量,自定义常量
那么自定义常量如何定义呢,请看下面这段代码:
public class Demo1 {
public static final double PI=3.1415926;
public static void main(String[] args) {
}
}
这里定义一个比较常用的常量π,他的值时不能被修改的,如果修改请看下图:
上面这个概念是final修饰的基本数据类型,下面这个例子,用final修饰引用数据类型,看一下效果。
我先创建了一个student对象,然后又创建了一个student1,然后我将student1的地址值赋给student,这个时候就会报错。可见,用final修饰过的引用数据类型的地址值在后面的操作中是不可以被修改的。
3、修饰方法
存在继承关系的两个类,父类中方法被final修饰,子类就无法重写父类的该方法。
补充:方法重写
方法重写是指,子类重新定义父类中已有方法,其方法名称,参数列表,返回值均不发生改变。
方法重写的前提:必须存在继承关系。
注意事项:子类的方法权限修饰符等级必须大于等于父类方法的全新修饰符。(例如父类方法是默认修饰符,子类重写该方法可使用默认或者public修饰)