当前位置: 首页 > article >正文

深挖——final

final的含义

最终的,它是一个修饰符

可以修饰的成员

A、外部类

    final修饰的外部类叫做太监类,不能被子类所继承
public final class FinalDemo {

}

在这里插入图片描述

B、成员变量/局部变量

	当变量一旦被final修饰之后,它的值是固定不变的,不能更改

在这里插入图片描述
不能更改是指不能通过调用再赋值去改变给的初始值,切勿直接源码中这句代码直接改值 static String name = “球1xxx”

C、方法

	final修饰的方法,不能被子类重写【注意:static修饰的方法也一样】

在这里插入图片描述

对于final修饰的成员如何调用?

如果用了static修饰的,直接类名点去调用,没有static修饰的,直接对象点去调用

特殊情景

public class FinalDemo {
    public String name;
    public int money;

    public FinalDemo() {
    }

    public FinalDemo(String name, int money) {
        this.name = name;
        this.money = money;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "FinalDemo{" +
                "name='" + name + '\'' +
                ", money=" + money +
                '}';
    }
}

调用上面类
在这里插入图片描述
疑问:如上为什么用final修饰的实例化对象之后,还能修改后面赋予的值,并且还能打印出来呢?

上面而言,这里没有编译错误的原因是final修饰的是 aa 这个变量,只有aa这个变量的值发生改变的时候,它才会报错,如下:

在这里插入图片描述

final常用场景

修饰成员变量,如果一个成员变量被final修饰了,该变量一般都会和public static一起使用,就会成接口中定义全局常量那样,命名全大写


http://www.kler.cn/a/513532.html

相关文章:

  • React 中hooks之 React.memo 和 useMemo用法总结
  • |Python新手小白中级教程|第三十章:日期与时间(入门)
  • StackOrQueueOJ3:用栈实现队列
  • 线程池 | java中的多线程
  • PyTorch使用教程(9)-使用profiler进行模型性能分析
  • TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文
  • 分布式搜索引擎02
  • Emacs折腾日记(十一)——求值规则
  • EXCEL的一些用法记录
  • 每日一刷——1.20——准备蓝桥杯
  • 【全栈】SprintBoot+vue3迷你商城(5)
  • 经验收录/用复盘的心态去学习
  • Stable Diffusion 提示词编写技巧及示例
  • 4.6.3递归算法
  • RTK定位
  • 常用排序算法之插入排序
  • Linux_线程概念
  • CentOS 7 下安装RabbitMQ教程_centos启动rabbitmq
  • 分享源代码防泄露实战经验
  • Three.js实战项目01:vue3+three.js实现圣诞动画贺卡项目
  • 99.9 金融难点通俗解释:总资产收益率(ROA)
  • Spingboot整合Netty,简单示例
  • HJ108 求最小公倍数(Java版本)
  • Nim游戏算法问题(Java)
  • 颜色分配问题
  • 深入理解 Java 的数据类型与运算符