欢迎学习 Java 基础文章系列之 final 关键字

  • final 代表什么意思?

    • final 通常是指无法被改变或者不能被改变的,什么情况下不想被改变呢?

      • 不想改变可能有两种原因:设计或者效率。
  • 在Java中 final 关键字会在哪几个地方使用到?
    • 有三种地方使用:数据(成员变量、参数)、方法、类。

      • final 数据(成员变量、参数)

        常量以关键 final 表示,必须是基本数据类型。

        对于基本类型使数值恒定不变,而用于对象引用,使引用恒定不变,一旦引用被初始化指向一个对象,就无法改为指向另一个对象,然而对象其自身却是可以被修改的,Java 并未提供使任何对象恒定不变的途径(但是可以自己编写类已取得是对象恒定不变的效果),这一限制同样适用于数组,它也是对象。

        • 空白 final

          Java 允许生成:“空白 final”,即被声明为 final 但又未给定初始值的域。
        • final 参数

          Java中允许在参数列表中以声明的方式将参数指明为 final。无法在方法中更改参数引用所指向的对象。

          你可以读取参数,但却无法修改参数,这一特性主要用来向匿名类传递数据。
      • final 方法

        final 方法的考虑:出于对设计的考虑:确保在继承中使方法行为保持不变,并且不会被覆盖,或者出于效率(遭受劝退了)。

        该方法不会被重写(覆盖、覆写)。

        final 和 private 关键字

        类中所有的 private 方法都是隐式地指定为 final 的。由于无法使用 private 声明的方法,所以也就无法重写该方法。

        如果试图重写一个 private 方法(隐含式的 final),似乎是可行的,并且编译器也不会提示错误。

        “重写(覆盖、覆写)”只有在某方法是父类的接口(非interface)的一部分时才会出现。

        final修饰的方法在特定的访问权限下可以被继承。

        这是因为,方法是否被final修饰与方法的访问权限是两回事,没有任何关系,被final修饰的方法和未被final修饰的方法都可以自由的指定访问权限。

        我们有兴趣去谈论final关键字和访问权限关键字在修饰方法的过程的起到的作用,如下表(声明:final和访问权限是两个独立的概念,没有任何比较意义,所有本表仅方便读者理解,不可作为正统知识)
protect关键字 final关键字 private关键字
是否可以继承
是否可以重写
小结 private < final < protect (仅适用于方法)

正如上表所示,private实现了final方法不可重写的功能,并附加不可继承功能。(再次声明:final和访问权限是两个独立的概念,没有任何比较意义,所有上表仅方便读者理解,不可作为正统知识)可以对private方法添加final关键字,但是这种做法没有任何意义。

	* final 类

final 类的考虑:对该类的设计永不需要做任何变动,或者出于安全的考虑不希望它有子类。

该类不能被继承,final 类中所有的方法都是隐式指定为 final 关键字的。

Java 关键字之 final的更多相关文章

  1. [JAVA关键字] static & final

    JAVA十分常见的关键字static & final 总的来说final表示常量,即不可更改的:而static表示静态,即全局的 1. final 类:不能被继承 2. final 方法:能被 ...

  2. Java关键字(四)——final

    对于Java中的 final 关键字,我们首先可以从字面意思上去理解,百度翻译显示如下: 也就是说 final 英文意思表示是最后的,不可更改的.那么对应在 Java 中也是表达这样的意思,可以用 f ...

  3. java关键字之final

    final表示不能修改. final修饰的方法不能被重写, final修饰的类不能被继承并且类里的所有方法都是final,成员变量可以是final或者不是final. final修饰的成员变量不可以改 ...

  4. Java 关键字static final使用总结

    Static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被 ...

  5. Java关键字final、static

    一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...

  6. 浅析Java中的final关键字(转载)

    自http://www.cnblogs.com/dolphin0520/p/3736238.html转载 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括 ...

  7. java关键字extends(继承)、Supe(父类引用空间)、 This(方法调用者对象)、Instanceof(实例类型-判断对象是否属于某个类)、final(最终)、abstract(抽象) 、interface(接口)0

    java 继承使用关键字extends   继承的作用:减少代码量,优化代码 继承的使用注意点: 1子类不能继承父类的私有变量 2.子类不能继承父类的构造方法 3.子类在调用自己的构造方法时 会默认调 ...

  8. java笔记——Java关键字static、final使用小结

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  9. 关于Java中的final关键字

    Java中的final关键字是用来限制用户行为的,说白了,就是用来限制我们这些程序员的.final可以用来修饰:变量.方法.类. 1)Java final variable final用来修饰变量时, ...

随机推荐

  1. Windows环境下搭建Hadoop(2.6.0)+Hive(2.2.0)环境并连接Kettle(6.0)

    前提:配置JDK1.8环境,并配置相应的环境变量,JAVA_HOME 一.Hadoop的安装 1.1 下载Hadoop (2.6.0) http://hadoop.apache.org/release ...

  2. VirtualBox上安装Debian10个人备忘笔记

    准备 VirtualBox 下载链接:Downloads – Oracle VM VirtualBox,下载完成后安装即可. Debian 下载链接:通过 HTTP/FTP 下载 Debian CD/ ...

  3. Linux查找运行程序主目录

    1.查看程序所在PID netstat -lntup 2.根据PID查找程序所在目录 ll /proc/PID/exe 3.查找程序配置路径 /proc/PID/exe -t

  4. Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署

    # 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...

  5. 洛谷3769[CH弱省胡策R2]TATT (KDTree)(四维LIS)

    真是一个自闭的题目(调了一个上午+大半个下午) 从\(WA\)到\(WA+TLE\)到\(TLE\)到\(AC\) 真的艰辛. 首先,这个题,我们可以考虑直接上四维KDTree来解决. 对于kdtre ...

  6. 洛谷1501 Tree II(LCT,路径修改,路经询问)

    这个题是一个经典的维护路径信息的题,对于路径上的修改,我们只需要把对应的链\(split\)上来,然后修改最上面的点就好,注意pushdown的时候的顺序是先乘后加 然后下传乘法标记的时候,记得把对应 ...

  7. yum源安装nginx

    nginx使用yum源安装 安装步骤 使用yum源安装依赖 yum install yum-utils 配置nginx.repo的yum文件 vim /etc/yum.repos.d/nginx.re ...

  8. SpringBoot 后端接收前端传值的方法

    1.通过HttpServletRequest接收,适用于GET 和 POST请求方式       通过HttpServletRequest对象获取请求参数 @RestController @Reque ...

  9. mall笔记

    介绍 SpringBoot.SpringCloud.SpringCloudAlibaba.Nacos.Sentinel.Seata整合demo. 软件架构 JDK 1.8 Spring Boot 2. ...

  10. 【UE4 C++ 基础知识】<15> 智能指针 TSharedPtr、UniquePtr、TWeakPtr、TSharedRef

    基本概念 UE4 对 UObject 对象提供垃圾回收 UE4 对原生对象不提供垃圾回收,需要手动进行清理 方式 malloc / free new / delete new与malloc的区别在于, ...