java final 修饰参数_Java final 修饰符

final有“终态”和“不可变”的意思,它可以修饰非抽象类、非抽象方法、变量和方法参数。

一、final类

用final修饰的类没有子类,所以不能够被继承。

在设计类的时候,如果这个类不需要有子类,类的实现细节不允许被改变,并且确信这个类不会被扩展,那么就设计为final类。

二、final方法

final方法不能被子类覆盖,但可以被继承。

public和protected修饰的final方法

由于用public和protected修饰的final方法对于子类而言具有可见性,所以子类不能覆盖它们。

private修饰的final方法

由于private修饰的方法对于子类而言不具有可见性,所以子类再实现一个签名一样的方法,只能称之为拓展,而不是覆盖。

default的final方法

没有用访问修饰符修饰的final方法,在本包子类中,不能覆盖,因为可见;而在其他包的子类中,由于不可见,可以拓展一个签名一样的方法。

三、final变量

用final修饰的变量相当于常量,只能赋值一次,以后不能再修改。final变量可以在声明的时候直接初始化,也可以先声明,而不赋初值,这种变量也称为final空白。

final静态变量

这种final空白要在static代码块里进行初始化。

final成员变量

要在构造函数里初始化。

final局部变量

在成员方法中,只能赋值一次。

四、final参数

方法的参数其实也是一种局部变量,它的作用域就是当前方法,当参数被final修饰时,我们可以读取该参数,但是无法改变参数值。

五、final和static

final static方法没有意义,因为static方法本来就不会被子类覆盖。

final static变量相当于“全局常量”。

六、final和abstract

不能连用,final不允许子类覆盖,而abstract则要求子类重写它,互相矛盾。

转载请注明如下内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值