JAVA Final的用法(自己碰到过的所有情况总结)

本文详细介绍了Java中final关键字的使用方法及其应用场景。包括final修饰类、成员变量、方法及参数的特点与限制。对于final修饰的基本类型变量和引用变量的区别也做了深入解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Final是java最常用的修饰符之一,我总结了以下几点:

1.final 修饰类,不用说被修饰的该类不能被继承,最典型的就是String

2.final 修饰成员变量 ,那么该成员变量必须在声明的时候被赋值,或者在构造函数中赋值,否则编译是不会通过的。

public class A {

final int a = 1;

} 或者

public class A {

final int a;

public A() {

a = 1

}

}

其次final修饰的成员变量初始化后不能再被更改。

3.final 修饰方法,该类的final方法不能被子类重写。注意:抽象类中的abstract修饰的抽象方法是必须被继承重写,因此final是不能和abstract一起用的,相互矛盾。

abstract final void A(); 是错误的

4.final 修饰参数,这个很初学者可能没有注意到。分为两种情况,一种是修饰基本类型变量,一种是修饰引用变量

修饰基本类型变

public void A(final String a) {

a = "aaaa";//编译时通过不了的

}

修饰引用变量

public class B {

int i = 0;

}

----------

public void A(final B b) {

b.i = 5;//编译是通过的,因为修饰引用变量,只有改变引用指向的堆地址,才会报错,这里指向的还是b实例,改变了他成员变量的值而已。

}

public void A(final B b) {

b = new B();//编译通过不了!

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值