Java中的final关键字

概念

final 是 Java 中的一个关键字,可以用于修饰类、方法和变量。

当一个类被声明为 final 时,它意味着该类不能被继承。

当一个方法被声明为 final 时,它意味着该方法不能被重写。

当一个变量被声明为 final 时,它意味着该变量的值不能被修改。

final饰修类

举例String类就是final修饰的,所以不能被继承,进而重写其方法

如果声明一个类为final类, 那么这个类就是最终类,不能被继承

复制代码
public final class ParentClass {
    public void happy() {
        System.out.println("高兴");
    }
}

当写一个类去继承它的时候

复制代码
public class ChildClass extends ParentClass{
 
}

就会报错错误;

注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写。

final类中的成员变量可以根据需要设为final,但是final类中的所有成员方法都会被隐式地指定为final方法。 在使用final修饰类的时候,一定要谨慎选择,除非这个类以后不会用来继承或者出于安全考虑,尽量不要将类设计为final类。

final修饰方法

当final用来修饰一个方法的时候,这个方法就是最终方法,那么很明显就是说不能被覆盖重写。

复制代码
public class ParentClass {
 
    public void happy() {
        System.out.println("高兴");
    }
    
    //用final关键字修饰的方法
    protected final void play(){
        System.out.println("开心的玩耍");
    }
 
}

我们在继承类中去看下 play()方法是不可以被override的,也就是是报错,说明 final修饰的方法,是一个最终方法,不能被子类去覆盖重写。

final修饰变量

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

  • 当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;

  • 当final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。本质上是一回事,因为引用的值是一个地址 ,final要求值,即地址的值不发生变化。
    final修饰一个成员变量(属性),必须要显示初始化。这里有两种初始化方式,一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。

    class Animal {
    private final int count = 0;
    public Animal() {
    count = 1; //报错
    final Object object = new Object();
    object = new Object(); //报错
    }
    }

相关推荐
砍材农夫1 小时前
spring-ai 第四多模态API
java·人工智能·spring
她说..3 小时前
Java 对象相关高频面试题
java·开发语言·spring·java-ee
watson_pillow4 小时前
c++ 协程的初步理解
开发语言·c++
庞轩px4 小时前
深入理解 sleep() 与 wait():从基础到监视器队列
java·开发语言·线程··wait·sleep·监视器
故事和你914 小时前
洛谷-算法1-2-排序2
开发语言·数据结构·c++·算法·动态规划·图论
皮皮林5515 小时前
面试官:ZSet 的底层实现是什么?
java
码云数智-大飞5 小时前
C++ RAII机制:资源管理的“自动化”哲学
java·服务器·php
2601_949816585 小时前
Spring+Quartz实现定时任务的配置方法
java
白毛大侠6 小时前
理解 Go 接口:eface 与 iface 的区别及动态性解析
开发语言·网络·golang
李昊哲小课6 小时前
Python办公自动化教程 - 第7章 综合实战案例 - 企业销售管理系统
开发语言·python·数据分析·excel·数据可视化·openpyxl