千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  IT问答库  >  Java基础知识

Java中final关键字如何使用

发布:Java培训 2022-01-20 15:23

Java中final关键字如何使用

推荐答案

final变量只能赋值一次,赋值的方式有三种:

1)声明变量时直接赋值;

2)非静态成员变量在{}块中赋值,静态成员变量在static{}块中赋值;

3)非静态成员变量在构造方法中赋值。

final修饰类

final类不能被继承,因此不会有子类。final类中的方法不论是否有final修改,都是final的。

下面定义了一个简单的final类:

public final class FinalClass { }

//下面的类继承将会出现编译错误

class Sub extends FinalClass { }

final修饰方法

final方法不能被override。若父类中的方法为final的,则子类不能override该方法,但可以调用该方法(父类的final方法)。

下面的程序试图重写final方法,将会引发编译错误:

public class FinalMethod {

public final void say () { }

}

class Sub extends FinalMethod {

//下面方法将会出现编译错误

public void say () { }

}

final成员变量

final修饰的变量不可被改变,意思是不能被重新赋值。由于final修饰的成员变量不能重新赋值,所以Java语规定:final修饰的成员变量必须由程序员显示的指定初始值。

final修饰的类变量和实例变量指定初始值得地方如下:

1)类变量:必须在静态初始化块中指定初始值或声明该类变量时指定初始值,而且只能二选一指定。

2)实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值,而且只能三选一指定。

final修饰基本类型变量和引用类型变量的区别:

当final修饰基本类型变量时,改基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅只是引用,final只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。

最新问答资讯

01 unity用什么编程语言?unity学习难度大吗

学习 unity 语言
6020 人关注

02 python容易学吗?学好python有什么好处?

学习 python 工作 培训
5389 人关注

03 html是什么语言?html学习难吗?

学习 html 语言 可以
5062 人关注

04 c语言难学吗?c语言学好要多久?

语言 技术 学习
4733 人关注

06 学好平面设计要多久?报速成班靠谱吗?

平面 设计 学习 时间
4238 人关注

相关问题

计算机前端和后端区别,到底该学哪一个?

互联网行业的发展速度很快,有关市场上对于it行业的人才需求量越...

java和php的区别是什么?哪一个更难一些?

有很多零基础的小白想要去学习编程技术,那么可以考虑一下java和...

java与java script的区别有哪些?

相信大多数同学对java、java script都不会陌生,二者都是编程语...

java中什么是继承?

继承的特点:只需明确一点,java只支持单继承,不支持多继承,但...

java byte取值范围是什么?

同学您好,java byte取值范围是什么?针对这个问题可以看看下面的...

javascript和java有什么区别

1)基于对象和面向对象:Java是一种真正的面向对象的语言,即使是...

测一测
你知道多少IT梗