博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

java关键字final用法详解

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关键字属于较为常用的关键字之一,所以需要更深层次的了解学习,我这里列的几个作用都是我从网上别人那看到的,所以如果还有一些别的文中没有列出的方法,也希望各位大神多多指点。

posted @ 2018-07-27 09:35  疯狂打码  阅读(1283)  评论(0编辑  收藏  举报