final方法防止被重写,确保核心逻辑不变;final类防止被继承,保证类的不可变性与安全性,常用于工具类和标准库如String。

在Java中,final 是一个关键字,可以用于修饰类、方法和变量。这里我们重点讲解如何使用 final 方法 和 final 类,以及它们的实际作用和使用场景。
final 方法:防止被重写
当一个方法被声明为 final 时,它不能在子类中被重写(override)。这通常用于确保某个方法的行为在整个继承体系中保持一致。
例如:
class Animal {
public final void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
// 编译错误!不能重写 final 方法
// public void makeSound() {
// System.out.println("Bark");
// }
}
在这个例子中,makeSound() 被声明为 final,因此 Dog 类无法修改其行为。如果尝试重写,编译器会报错。
立即学习“Java免费学习笔记(深入)”;
使用建议:
- 当你希望某个核心逻辑不被篡改时,比如工具类中的关键方法。
- 提高程序安全性,防止意外或恶意的重写。
- 配合设计模式使用,如模板方法模式中,固定流程的方法设为 final。
final 类:防止被继承
当一个类被声明为 final 时,它不能被其他类继承。也就是说,这个类不会有子类。
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
例如:
final class MathUtils {
public static int add(int a, int b) {
return a + b;
}
}
// 编译错误!不能继承 final 类
// class MyMath extends MathUtils {
// }
Java 标准库中就有典型的 final 类,比如 String、Integer 等包装类。这些类设计为不可变且行为固定,因此不允许被继承。
使用建议:
- 用于创建不可变类或工具类,确保其功能不会被扩展或改变。
- 提升性能和安全性,JVM 可对 final 类做一些优化。
- 当你不希望别人“随意”扩展你的类时,使用 final 是一种明确的设计表达。
注意事项和最佳实践
虽然 final 能增强安全性和稳定性,但也要合理使用:
- 不要过度使用 final,否则会影响代码的可扩展性。
- final 类意味着彻底封闭,一旦发布就无法通过继承添加新功能。
- public 的 final 方法虽然不能被重写,但仍可以被重载(overload)。
- 构造方法不能是 final,因为构造方法不会被继承。
基本上就这些。final 方法和 final 类是 Java 中控制继承和多态的重要手段,用好它们能让代码更安全、更清晰。








