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

  • 相关阅读:
    DFS-B
    DFS/BFS-A
    DFS-回溯与剪枝-C
    BFS-八数码问题与状态图搜索
    PTA-1003 我要通过!
    二分-G
    二分-F
    二分-E
    二分-D
    二分-C
  • 原文地址:https://www.cnblogs.com/libinhyq/p/9373396.html
Copyright © 2011-2022 走看看