zoukankan      html  css  js  c++  java
  • java中final的用法

    final从字面翻译来看,有最后的,最终的;  决定性的;  不可更改的等含义,在java里面主要还是“不可改变的”这层意思,不可改变或者不想改变的final主要用在类、方法、数据这三个方面。

    一、final类

    当我们声明一个类,不想让别人利用这个类来声明子类,就可以把这个类声明为final类。这个类是“断子绝孙”的,也就是不允许被继承,但是它可以继承自其他类。比如:

    final class Executive extends Manager

    {

    … …

    }

    还有一个典型的final类就是String类,String类没有子类,也就是说,String的引用一定是一个String对象,不可能是其他类的对象。

         如果一个类声明为final类,则它的成员方法也都默认是final的,它的成员变量并不受影响。

    二、final方法

    如果我们声明一个方法,不想让它在子类中被修改,也就是想把这个方法锁定,可以声明为final方法。这样做可以使方法的行为保持不变,不被覆盖。

    java的早期版本中,声明final方法还会出于效率的考虑,随着虚拟机的优化,这方面的问题基本不用考虑,一般都是从设计的角度声明final方法。

    声明final方法和声明final类的目的基本是一致的,就是不想被改变。比如Calendar类中的getTime和setTime方法都声明为final,这样做的目的就是Calendar类来实现Date类与日历状态之间的转换,不允许别人再用子类处理这个问题。

    三、final数据

    final数据,简单来说包括两种数据,一种是基本数据,一种是对象引用。

    对于final的基本数据,必须在定义的时候就要赋值,并且不能更改。如果这个数据还是static的,那么,它就占据一段不能更改的存储空间,按照java规范,这样的常量用大写表示,并用下划线分隔各个单词。

    对于final的对象引用,final使得引用恒定不变,也就是说这个引用指向了一个对象,它就不能再指向其他对象了,但是,这个对象的内容却是可以更改的。java并没有提供一个让对象恒定不变的途径。

    以上内容是参考java编程思想和java核心技术卷I两本巨著整理,有不合适的地方,请大家指正。

  • 相关阅读:
    【编程练习】poj1111
    Android项目开发填坑记-Fragment的onBackPressed
    【编程练习】poj1068
    HTML DOCTYPE文档类型举例说明
    css link import
    css position relative obsolution
    UL/LI
    背离
    stock 当天盘势
    stock 仓位
  • 原文地址:https://www.cnblogs.com/coodream2009/p/5460066.html
Copyright © 2011-2022 走看看