final关键字在java中也是属于比较常用的一种,因此也算得上是一个比较重要的关键字,有必要对它进行深入的学习。
一、定义:用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义变量。(源自百度百科)
二、作用:final关键字有着诸多用处,归纳总结起来,大概有一下几点:修饰类,修饰方法,修饰变量和修饰参数。
1.修饰类:final修饰的类,拥有着不能被继承的特性,因为其所有的成员和方法都是默认final的,所以也不可以被覆盖,因此用的比较少,需要慎重考虑。
public final class Person { public static void main(String[] args) { System.out.println("这是一个final类"); } }
2.修饰方法:用final来修饰方法,表明该方法不能被覆盖,这样做的考虑原因主要是防止任何继承类修改它的含义。
关于private和final关键字有那么一点联系,类中的所有private方法都隐式的指定为final,由于无法在类外使用private方法,所以也就无法覆盖它。
public class Person { //普通方法 public void Demo1(){ System.out.println("这是一个普通方法"); } //final方法 public final void Demo2(){ System.out.println("这是一个final方法"); } } class Student extends Person{ //重写父类方法 public void Demo1(){ System.out.println("重写的方法"); } }
3.修饰变量:用final修饰的基本数据类型变量,其数值一经初始化就不允许修改,这就是我们通常所说的常量。用final修饰引用数据时,则其初始化后就不能修改引用指向另一个对象。
class Test{ public int a; public Test(int a){ this.a = a; } } public class Person { //一经初始化值不可改变 private final int A = 1; //在构造函数中初始化 public final int B; public Person(int X){ B = X; } //final修饰的引用数据 public final Test C = new Test(1); }
4.修饰参数:我们在编写方法的时候,可以在基本数据类型参数前面加上final来修饰,它表示在整个方法中,这个参数的值是不能被改变的。在引用数据类型参数前面加上final来修饰,则表明该参数的引用不可被改变,但值可以改变。
public class Person { public static void main(String[] args) { Person person = new Person(); person.Demo(2); } public void Demo(final int i){ //i = 3; final修饰的参数不可改变 System.out.println(i); } }
总结:final关键字属于较为常用的关键字之一,所以需要更深层次的了解学习,我这里列的几个作用都是我从网上别人那看到的,所以如果还有一些别的文中没有列出的方法,也希望各位大神多多指点。