Java中的final修饰符用法大全

一,final修饰类
fianl修饰符如果修饰类的话就代表该类不可以被继承,即不允许被继承;

public final class NoExtends{}

如此,NoExtends类就不可以被继承了,即下面的代码就会报错

public calss ExtendsTest extends NoExtends{} //这是不可以的

由于NoExtends类有了final的修饰而无法被调用。类似的比如Java中的String类也是final修饰的,也即String类不允许被继承不允许扩展其方法或属性。

二,final修饰成员变量
final修饰成员变量之后就意味着该成员变量不能够被修改,由于外界无法修改该成员变量的值,故而其创建时就需要被赋值或者在其构造方法处赋值。如果final变量没有被赋值则会报错,且只能赋值一次。

private final int FinalPara = 5;

三,final修饰静态变量

private final static double Final_Para_Static = 6.6;
// TODO 或者也可以在static代码块儿内赋值
//static{
// Final_Para_Static = 6.6;
//}

对于控制可见性的修饰符诸如private,protected,public都是在类,属性,方法最前的位置,而在用final时是在这些修饰符之后的第二个位置。

四,final不能用来修饰构造方法
构造方法的名字与类的名字是一样的,构造方法与别的方法不一样,其不存在覆盖的可能,且子类也没有去覆盖构造方法的诉求。

五,final用来修饰方法
修饰方法之后该方法无法被子类覆盖

public final void describe(){
System.out.println("这是一个final修饰的方法哦~不能被覆盖");
}

那么上述在父类中的行为方法就无法在子类中覆盖了,尽管它是public,尽管子类继承了父类。
比如下面的子类中的代码就会报错

public void describe(){
System.out.println("子类覆盖了父类的方法吗?");
super.describe();
}

六,final修饰形式参数
如果用final修饰了形式参数,那么形式参数在被实际参数赋值之后,就不能再被赋值了

private double buy(final int count){}

七,final修饰局部变量
final也可以修饰局部变量,当然也是必须赋值且只能赋值一次

八,final修饰引用
这是个重头戏:引用被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。
即虽然我们的这个应用不能再指向其它的对象了,但是该引用指向的这个对象的内容仍然是可以被修改的。比如下面的代码,

public void describe(){
System.out.println(setname);
}
FinalObj.describe();
FinalObj.setName("变化该对象的名字");
FinalObj.describe();

这样的话describe方法中对于setname的描述还是会变化的。

九,final修饰数组
其实final对于数组的修饰跟final对于引用的修饰是有点儿类似的,对于被final修饰的数组而言,不能让这个数组指向别的数组,但是是可以修改这个数组中的元素的值的。

  • 14
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值