java中final关键字用法小结

来源:互联网 发布:navicat 备份数据库 编辑:程序博客网 时间:2024/06/04 00:39

根据上下文,java中final关键字的含义存在着细微的区别,但它通常指的是“不可改变的”不想改变可能有两种理由:设计效率,由于这两个字差了很远,所以final可能被误用。
以下谈到了使用final的三种用法:数据,方法,和类


  • final修饰数据
    1,一个永不改变的编译时常量
    2,一个在运行时被初始化的值,而你不希望它被改变。
    3,在对常量进行定义的时候,必须对其进行赋值。
    4,一个static又是final的域只占据一个不能改变的存储空间。
    5,java允许空白 final,所谓空白final是指被声明为final但又未给定初值的域。
    6,final修饰参数 java允许在参数列表声明的方式将参数指明为final。这就意味着你无法更改参数引用所指向的对象。例:
public class text {    public class FinalArguments {        void with(final Integer i) {             i = 1; //Illegal,i is final        }        void without(Integer i) {            i = 1;// OK        }        void f(final int i) {            //i++; can't change        }        int g(int i) {            return i + 1;        }//OK    }

  • final修饰方法
    1,把方法锁定,防止任何继承类修改它的含义。
    2,效率问题,现版本jvm虚拟机已优化
    3,类中所有的private关键字都隐式指为final,可以对private方法增添final修饰词,但并不会增加任何额外的意义

  • final修饰类
    1,当某个类的整体定义为final时,表明你不打算继承该类,而且也不允许别人这么做,或出于安全的考虑,你不希望它有子类。
    例:
public class text{    class SmartBrain{}    final class Diansaur{        int i= 7;        int j= 9;        SmartBrain smartBrain = new SmartBrain();        void f(){};    }    class FutherDia extends Diansaur{} //error:Cannot extend final class    class FutherBra extends SmartBrain{} //ok}

个人简单总结,2017.10.21

原创粉丝点击