Java50个关键字之final
final属性:被final修饰的变量不可变,由于不可变有两重含义,一是引用不可变,二是对象不可变。那么final到底指的是哪种含义呢?下面通过一个例子来进行说明。
从以上例子中可以看出,final指的是引用的不可变性,即它只能指向初始时指向的那个对象,而不关心指向对象内容的变化。所以,被final修饰的变量必须被初始化。
一般可以通过以下几种方式对其进行初始化:
①在定义的时候初始化;
②final成员变量可以在初始化块中初始化,但不可在静态初始化块中初始化;
③静态final成员变量可以在静态初始化块中初始化;
④在类的构造器中初始化,但静态final成员变量不可以在构造方法中初始化。 final方法:当一个方法声明为final时,该方法不允许任何子类重写这个方法,但子类仍然可以使用这个方法。另外还有一种被称为inline(内联)的机制,当调用一个被声明为final的方法时,直接将方法主体插入到调用处,而不是进行方法调用(类似于C++语言中的inline),这样做能提高程序的效率。
final参数:用来表示这个参数在这个方法内部不允许被修改。 final类:当一个类被声明为final时,此类不能被继承,所有方法都不能被重写。但这并不表示final类的成员变量也是不可改变的,要想做到final类的成员变量不可改变,必须给成员变量增加final修饰。值得注意的是,一个类不能既被声明为abstract,又被声明为final。