文章目录
final关键字
final关键字的含义
final:最终的
可以用来修饰类、属性、方法。
final修饰类
表示该类不可被继承。例如String类、System类等。
final修饰变量
对于基本数据类型的变量,如果使用final修饰,则该变量的值不可改变。
对于引用数据类型的变量,如果使用final修饰,则对其初始化以后便不能再让其指向另一个对象。
final修饰引用数据类型的变量时,则该引用变量指向的对象的内容可变吗?
下面举例说明:
public static void main(String[] args) {
final MyClass myClass = new MyClass();
System.out.println(++myClass.i);
}
}
class MyClass {
public int i = 0;
}
其输出结果为: 1.则说明,引用变量指向的对象的内容可变。
final修饰的变量与普通成员变量有何区别?
当final作用于类的成员变量时,成员变量必须在定义时或在构造器中进行初始化赋值,(如果类中的构造器有多个,则每个构造器都要对final修饰的属性进行初始化。)而且final变量一旦被初始化赋值之后,就不嗯能够再重新复制。
final修饰一个方法
final修饰方法,表示该方法不能被重写。如果一个类被修饰为final,则该类中所有的成员方法都会被隐式地修饰为final。
使用final修饰方法的原因有两个:
① 将方法锁定,以防任何继承类修改他的含义。
② 效率问题,在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升,在最近的Java版本中不需要使用final方法进行这些又花了。
类的private方法会被隐式地指定为final方法。