JAVA-final关键字和接口

2023-10-27

1.Final 关键字

        final 关键字代表最终的,不可改变的

        final 可以修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

        final修饰类,即代表它不能有儿子类,不能被继承。

final修饰类 方法

        使用语法:

声名类:final class 类名 {//类体}

声名方法:修饰符(public/private/default/protected) final 返回值类型 方法名(){

                //方法体

}

举例:

final class Show{
    public final void show(){
        //方法体
    }
}

 注意:

  • 如果定义了一个final类,那么其中所有的成员方法都不能被重写(因为它没有子类)
  • 当用final修饰方法后,这个方法就是最终方法,也就是不能被覆盖重写。

而且对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。有抽象方法的abstract类被继承时,其中的方法必须被子类Override,而final不能被Override。

例如:

因为抽象的方法子类继承后必须要重写父类的方法,而父类的方法被final修饰后就不能被重写了

但是如果父类的方法是抽象的,子类的方法重写还是可以被final关键字修饰的。

 final修饰变量

         当final修饰基本数据类型的变量时,只能被赋值一次,并且定义再类里面,方法外的变量必须在定义的时候赋值,否则就会报错

例如:

而定义在方法内就没有问题

 

 而且定义的变量只能被赋值一次,而且只能手动赋值,再次赋值也会报错

 当final修饰引用类型的变量时,变量对应的地址值不能变,但是地址所指向的对象可以改变

例如:

当引用类型变量没有被final修饰的时候

public class Test9 {
    public static void main(String[] args) {
        Show show = new Show("喜羊羊");
        System.out.println(show);
        System.out.println(show.name);
        show=new Show("灰太狼");
        System.out.println(show);
        System.out.println(show.name);
    }
}
class Show {
    String name;
    public Show(String name) {
        this.name=name;
    }
}

 运行结果:地址值不一样

但当用final修饰的时候,地址值不可变,会报错

 原因是什么呢?

因为final修饰了这个实例化对象,这个对象所对应的地址就不能被修改,只能修改它所指向的对象

public class Test9 {
    public static void main(String[] args) {
        final Show show = new Show("喜羊羊");
        System.out.println(show);
        System.out.println(show.name);
        show.name="灰太狼";
        System.out.println(show);
        System.out.println(show.name);

    }
}
class Show {
    String name;

    public Show(String name) {
        this.name=name;
    }
}

运行结果:地址不变,所指向的对象改变

 

 查询API发现像public final class String 、public final class Math、public final class Scanner 等,很多我们学习过的类,都是被final修饰的,目的就是供我们使用,而不让我们所以改变其内容。

例如:String

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA-final关键字和接口 的相关文章

随机推荐

  • java21天打卡-day14 日期时间

    import java util Calendar import java util Date public class Day14 数字和日期 Date 题目1 分别打印出当前时间所属的年月日 Calendar类 题目2 计算出当前时间的
  • buuctf-[极客大挑战 2019]LoveSQL

    打开靶机进入之后是个登录界面 查看源码得知是get类型注入 因为是sql注入的题嘛 所以我们直接尝试用万能密码进行登录 用户名1 or 1 1 密码随意 成功登录 并没有得到flag 此时发现url中貌似可以进行sql注入 并且已经把万能密
  • scrapy 部署到服务器上

    1 安装依赖库 pip install scrapyd pip install scrapyd client 2 验证是否成功 cmd中输入 scrapyd deploy h 如下图ok的 3 运行 scrapyd dep 若遇到错误 报错
  • 运行报错Parsing error: The keyword ‘import‘ is reserved

    问 运行报错Parsing error The keyword import is reserved 答 分析 这是因为我们还没有在配置文件 eslintrc中配置parserOptions来指定语言版本为和模块类型 在 eslintrc添
  • uniapp 微信小程序webview 踩坑

    uniapp 微信小程序的存在许多功能上的限制和约束 有些情况不得不去使用webview进行开发实现需求 比如 原生无法满足 例如某团队维护SDK 只提供了WEB端jsSDK 且不维护小程序SDK H5可以同时适用多端 适用范围更广 H5可
  • 13LinuxC线程学习之利用pthread_create设置线程分离属性和相关属性解释

    1 线程属性 1 本节作为指引性介绍 linux下线程的属性是可以根据实际项目需要 进行设置 之前我们讨论的线程都是采用线程的默认属性 默认属性已经可以解决绝大多数开发时遇到的问题 如我们对程序的性能提出更高的要求那么需要设置线程属性 比如
  • java常用类之Math类--Java笔记

    Math类包含的一些用于数学运算的静态方法 1 abs 绝对值 System out println 1 t Math abs 10 2 pow 求幂 System out println 2 t Math pow 10 2 3 ceil
  • 什么是PROFINET?PROFINET支持哪些通信方式?

    什么是PROFINET PROFINET 通讯是一种新的以太网通讯系统 是由西门子公司和Profibus用户协会开发 PROFINET具有多制造商产品之间的通讯能力 自动化和工程模式 并针对分布式智能自动化系统进行了优化 其应用结果能够大大
  • F-Measure MCC ROC Area PRC Area_MCC学生会

    传媒学院学生会 媒体运营部 水墨勾染纸笺 是山海的讯息 尘世浮华轮换 是星辰的轨迹 用笔尖筑起一座城 用光影编成一曲歌 我们是凡嚣之外的不同颜色 抬眼看花开花落 云卷云舒 红霞满天 千种美景 万缕愁思 卷携着落日 我想把无数次的擦肩而过和这
  • python3GUI--在线小说播放器By:PyQt5(附ui源码)

    文章目录 一 准备工作 1 PyQt5 2 qtawesome 3 QMediaPlayer 4 LAVFilters 二 预览 1 启动 2 查看小说详情 播放小说 3 搜索后播放 4 动态演示 三 设计流程 1 UI设计 2 整体流程设
  • pycharm自带python解释器吗,如何设置默认PyCharm解释器?

    My PyCharm installation has two interpreters available Python 3 3 2 usr bin python3 3m Python 2 7 5 usr bin python2 7 Wh
  • docker获取镜像image id命令_Docker之镜像和容器基础操作命令

    本篇文章是介绍镜像 image 和 容器 container 的基础操作命令 后直接使用英文 image 和 container 替代 首先来讲解释一下 image 和 container 的关系 image 概念 image 就是我们从
  • Blender 建模案例一(1)

    目录 1 指环 1 1 创建一个柱体 1 2 柱体微调 1 3 缩放 1 4 应用缩放 1 5 物体属性回归默认 1 6 进入编辑模式 1 7 内插面 1 8 桥接循环边 1 9 添加表面细分修改器 1 10 平滑着色 1 11 添加环切
  • LTH7锂电池充电IC

    LTH7是一个完善的单片锂离子电池恒流 恒压线形电源管理芯片 它薄的尺寸和小的外包装使它便于便携应用 更值得一提的是 LTH7专门设计适用于USB的供电规格 得益于内部的MOSFET 结构 在应用上不需要外部电阻 和阻塞二极管 在高能量运行
  • libsvm相关变量总结以及libsvm 参数粗调、微调技巧 和PCA主成分分析princomp函数的使用

    libsvm搭建的支持向量机运行起来 在命令行里会蹦出很多变量 开始的时候 我不以为意 现在想想这样糊弄 到最后还是稀里糊涂 不如一次总结 当做日后的复习资料 运行起来会出现这些 1 变量总结 optimization finished i
  • 点击移除样式,再点击新增样式jq代码

    点击增加样式 再点击移除样式的jq function exam back click function if exam back hasClass exam modf5 exam back removeClass exam modf5 el
  • 什么是ui/ux

    目录 前言 1 图形元素 2 布局 3 颜色和视觉效果 4 动画和过渡效果 5 6 用户体验 User Experience UX 7 响应式设计 Responsive Design 8 可用性 Usability 9 信息架构 Infor
  • python firefly 游戏引擎 教程(一) 程序入口

    程序基本结构 程序的基本流程 firefly 基本程序流程如上所示 首先通过master模块分别启动 gate 网关 db 数据库相关 net 网络 chat 聊天 game 游戏逻辑 模块 然后各个模块分别调用initconfig进行初始
  • 入门指南:深入解析OpenCV的copyTo函数及其与rect的应用场景

    文章目录 导言 copyTo函数的示例 copyTo函数与rect的应用场景 结论 导言 OpenCV是一个功能强大的开源计算机视觉库 广泛应用于图像处理和计算机视觉任务 在OpenCV中 copyTo函数是一个重要的图像处理函数 它允许我
  • JAVA-final关键字和接口

    1 Final 关键字 final 关键字代表最终的 不可改变的 final 可以修饰变量 包括类属性 对象属性 局部变量和形参 方法 包括类方法和对象方法 和类 final修饰类 即代表它不能有儿子类 不能被继承 final修饰类 方法