JAVA学习有感--final修饰符的理解

来源:互联网 发布:两个系统数据库对接 编辑:程序博客网 时间:2024/06/06 05:42

温故而知新,可以为师矣。

初中的时候对这句话的理解,就是课文最后的那一句“并背诵全文”。

现在想想,真的很有道理的一句话。当初大2学JAVA的时候很浮躁,对final理解的也不深,最近用到了,也查了一些资料,又从中收获了很多原来不知道得东西。


final成员变量

final成员变量一旦被赋予初始值之后就不可更改。final成员变量不会初始化,需要程序员自己进行初始化。我们可以在初始化块中或构造函数中对final成员变量进行初始化,不可以在普通方法中对final成员变量进行初始化。

普通的成员变量,没有指定初始值的时候,会被系统赋值,但是final成员不会被赋值。


final局部变量

和final成员变量一样,只可以被初始化赋值一次,赋值后不可更改。


final引用变量

final只能保证对于引用变量的地址保持不变,对于引用变量内部的成员变量,可以进行修改。也就是final只指向一个引用变量的地址,这个不变,其他的没关系。


final方法

通过使用final修饰方法,使其不可以被子类重写。它不能被重写,但是可以被重载。


final类

不可以被继承的类,继承final类会引起编译错误。


不可变类

不可变类(immutable)指的是该类创建完实例后,该实例的成员变量不会改变。JAVA的8个包装类和String都是不可变类。

我们使用private final 来修饰不可变类的成员变量。提供带参数的构造函数为不可变量设置初始值。不提供set方法。

有一点需要注意,当我们的成员变量中含有final引用变量的时候,我们必须保护好初始化这个引用变量的过程,使外界修改引用变量的成员变量的值,我们的引用变量也不会改变。否则该不可变类就不是一个不可变类。听起来很麻烦,因为现在没用到,如果找到好的例子,会第一时间给大家解读。

原创粉丝点击