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

final 类,底层逻辑

final 类,底层逻辑

final类的唯一核心特点不能被继承

定义语法非常简单:

final class 类名 {// 成员变量、成员方法
}

实操:final类不能被继承

先定义一个标准的 final 类:

final class Bank {public void showRule() {System.out.println("基础规则,不可随意修改");}
}

尝试继承这个类:

// 编译直接报错!
class SmallBank extends Bank {}

报错原因Bank 是 final 类,无法被继承。

final 类最核心的作用:锁死类结构,禁止扩展

final类的常见误区

误区1:final类不能创建对象

final类只是不能被继承,可以正常实例化、正常调用方法。

final class Bank {public void showRule() {System.out.println("基础规则,不可随意修改");}
}public class Main {public static void main(String[] args) {Bank bank = new Bank(); // 正常创建对象bank.showRule();        // 正常调用方法}
}

误区2:final类的方法不能使用

final类中所有方法、属性都可以正常使用,只是无法被重写。因为类已经被封死,自然不存在子类重写的可能。

区分:final三种用法

①. final 修饰变量:常量,只能赋值一次,不可修改

②. final 修饰方法:可以被继承,但不能被重写

③. final 修饰类不能被继承,彻底封死

final类的作用

  1. 保证代码安全性

在Java面向对象开发中,final类有着至关重要的作用,核心是约束类的拓展权限、优化程序性能、规范代码架构,具体作用分为以下三点:

1. 保障代码安全,防止逻辑篡改

项目中的核心业务类、基础工具类,承载着固定的业务规则和底层逻辑。将其定义为final类,禁止被继承,从根源上避免子类重写核心方法、篡改原有业务逻辑的问题,保证程序核心功能稳定、安全,这也是开发中最常用的作用。

  1. 提高程序效率

2. 优化程序性能,提升运行效率

普通类需要预留继承、方法重写的扩展空间,JVM运行时需要额外做校验判断。而final类结构固定、无法拓展,JVM可以对其进行专属编译优化,省去多余的校验流程,有效提升代码的运行效率。

  1. 规范代码设计

3. 规范代码设计,统一开发标准

当一个类的功能已经完整、逻辑固定,且后续无需新增拓展功能时,将其定义为final类,是规范的面向对象设计习惯。可以明确告知其他开发者,该类为最终版本,无需修改和继承,统一项目代码风格,减少冗余拓展设计。

Java中常见的final类

  • String 类:最终类,不可继承,保证字符串安全性

  • Math 工具类:数学计算工具,逻辑固定无需扩展

  • 包装类:Integer、Double 等,都是 final 类

总结

final类 = 最终类、封闭类,可实例化、可使用,唯一限制:禁止被继承。

在ATM系统、账户系统开发中,一些固定规则的工具类、状态类,都可以定义为final类,让代码更规范、更安全!