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(); //报错
    }
    }

相关推荐
一灯架构6 小时前
90%的人答错!一文带你彻底搞懂ArrayList
java·后端
踏着七彩祥云的小丑6 小时前
pytest——Mark标记
开发语言·python·pytest
Dream of maid6 小时前
Python12(网络编程)
开发语言·网络·php
W23035765737 小时前
经典算法:最长上升子序列(LIS)深度解析 C++ 实现
开发语言·c++·算法
Y4090017 小时前
【多线程】线程安全(1)
java·开发语言·jvm
不爱吃炸鸡柳7 小时前
Python入门第一课:零基础认识Python + 环境搭建 + 基础语法精讲
开发语言·python
布局呆星7 小时前
SpringBoot 基础入门
java·spring boot·spring
minji...7 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
Dxy12393102168 小时前
Python基于BERT的上下文纠错详解
开发语言·python·bert
风吹迎面入袖凉8 小时前
【Redis】Redisson的可重入锁原理
java·redis