您的位置:首页 > 编程语言 > Java开发

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

2015-03-07 16:45 369 查看
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();//编译通过不了!

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: