谈一谈java语言中的final关键字

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修饰)

猜你喜欢

转载自blog.csdn.net/qq_37291761/article/details/83043103