首页 理论教育 Java从入门到精通:了解final的使用

Java从入门到精通:了解final的使用

时间:2023-10-19 理论教育 版权反馈
【摘要】:Java中,final在三个地方可以使用,分别是类、变量和方法。1.final修饰类被final修饰的类不能被继承。动手写9.5.1由于final类禁止被继承,不会出现覆盖方法的情况,所以final类中的所有成员方法都被隐式定义为final。static和final同时修饰的变量不仅被引用时不可以更改,被引用的对象内部的值也不允许更改。动手写9.5.4上面示例编译报错,提示不能修改被final修饰的入参变量,编译结果如下:图9.5.3编译结果

Java从入门到精通:了解final的使用

Java中提供了final关键字,标识该属性或方法在程序中“不想被改变”。许多编程语言都有final,它会告知编译器这一部分数据是不可变更的。

Java中,final在三个地方可以使用,分别是类、变量和方法。

1.final修饰类

被final修饰的类不能被继承。这种设计方法是为了保证该类的设计永远不需要做任何改动,而且不希望该类有子类出现。

动手写9.5.1

由于final类禁止被继承,不会出现覆盖方法的情况,所以final类中的所有成员方法都被隐式定义为final。但是,final类中是允许成员变量不被定义为final的。

2.final修饰变量

被final修饰的变量,一旦被初始化就不能更改,一般用作常量。被final修饰的变量在声明时必须被赋值,可以在变量定义时直接赋值,也可以在构造方法中赋值,但是二者必须选其一。final定义的变量不仅可以修饰基本类型数据,也可以修饰对象。当修饰基本类型数据时,该变量的数据值不允许被更改;当修饰对象时,该变量的引用不允许被更改,永远指向初始化的对象。

动手写9.5.2

其运行结果为:

图9.5.1 final修饰变量示例

前面静态常量的讲述中曾有介绍,一个同时被static和final修饰的数据在内存中占有一块不能被改变的存储空间。static和final同时修饰的变量不仅被引用时不可以更改,被引用的对象内部的值也不允许更改。

3.final修饰方法(www.xing528.com)

被final修饰的方法不允许被覆盖重写,这是为了保证子类不能随意更改父类中定义的方法。但是,被final修饰的非私有方法仍可以被子类继承,可以通过子类来访问父类的final非私有方法。

动手写9.5.3

其运行结果为:

图9.5.2 final修饰方法示例

4.final修饰方法入参

final可以修饰方法的入参,被修饰的入参表示在整个方法的代码块中,参数无论是基本数据类型还是对象引用数据类型,都无法被重新赋值(入参传入进来就相当于变量的初始化完成)。给方法入参添加final是一种代码风格保护机制,以避免在大段的代码块中误操作和错误改写变量值。

动手写9.5.4

上面示例编译报错,提示不能修改被final修饰的入参变量,编译结果如下:

图9.5.3 编译结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈