java final
final关键字可以修饰变量(基本变量与引用),方法和类。
final修饰变量
当修饰基本变量时,表明该变量一旦被初始化为某一值就不能再被改变。
当修饰引用类型的变量时,表示该引用一旦被初始化时指向某个对象,那么这个引用的指向就不能再改变了,但是其指向的对象的值却还是可以改变的。
被final修饰的变量可以通过以下三种方式初始化
在它被定义的时候
public final int a = 10;
在初始化块里初始化
public final int a; // 初始化块中初始化final变量a { a = 10; }
在构造函数里初始化
public final int a; // 构造器中初始化final变量a public FinalTest() { a = 20; }
final修饰形参变量
final用于修饰形参变量,表示不能在方法中更改参数的值。
// 形参变量c与str均被final修饰 // 在方法中不能更改c的值,也不能更改str指向的对象 public void say(final int c, final String str) { c = c*2; // Error str = new String("Hello"); // Error System.out.println(c); System.out.println(str); }
final修饰方法
final修饰方法,则表明不能被子类重写(覆盖)。这样可以保证在继承中方法行为不变。父类中所有的private方法都是隐式指定为final的。对于private方法,如果我们在子类中定义一个与其完全一样的方法,也不能叫做重写,只是重写定义了一个新的方法。
class Base { private void f(){ System.out.println("Base.private()"); } public final void g(){ System.out.println("Base.final()"); } } class SubBase extends Base{ private void f(){ System.out.println("OverringBase1.f()"); } public void g(){ ///Error System.out.println("OverringBase1.g()"); } }
final修饰类
如果一个类被final修饰则该类不能被继承,当然此时该类中的所有的域都默认是final的。
posted on 2018-09-10 11:31 Deltadeblog 阅读(135) 评论(0) 编辑 收藏 举报