final方法防止被重写,确保核心逻辑不变;final类防止被继承,保证类的不可变性与安全性,常用于工具类和标准库如String。
在Java中,
final
是一个关键字,可以用于修饰类、方法和变量。这里我们重点讲解如何使用
final 方法
和
final 类
,以及它们的实际作用和使用场景。
final 方法:防止被重写
当一个方法被声明为
final
时,它不能在子类中被重写(override)。这通常用于确保某个方法的行为在整个继承体系中保持一致。
例如:
在这个例子中,
makeSound()
被声明为 final,因此 Dog 类无法修改其行为。如果尝试重写,编译器会报错。
立即学习
“
Java免费学习笔记(深入)
”;
使用建议:
当你希望某个核心逻辑不被篡改时,比如工具类中的关键方法。
提高程序安全性,防止意外或恶意的重写。
配合设计模式使用,如模板方法模式中,固定流程的方法设为 final。
final 类:防止被继承
当一个类被声明为
final
时,它不能被其他类继承。也就是说,这个类不会有子类。
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
例如:
Java
标准库
中就有典型的 final 类,比如
String
、
Integer
等包装类。这些类设计为不可变且行为固定,因此不允许被继承。
使用建议:
用于创建不可变类或工具类,确保其功能不会被扩展或改变。
提升性能和安全性,JVM 可对 final 类做一些优化。
当你不希望别人“随意”扩展你的类时,使用 final 是一种明确的设计表达。
注意事项和最佳实践
虽然 final 能增强安全性和稳定性,但也要合理使用:
不要过度使用 final,否则会影响代码的可扩展性。
final 类意味着彻底封闭,一旦发布就无法通过继承添加新功能。
public 的 final 方法虽然不能被重写,但仍可以被重载(overload)。
构造方法不能是 final,因为构造方法不会被继承。
基本上就这些。final 方法和 final 类是 Java 中控制继承和多态的重要手段,用好它们能让代码更安全、更清晰。
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");
// }
}
final class MathUtils {
public static int add(int a, int b) {
return a + b;
}
}
// 编译错误!不能继承 final 类
// class MyMath extends MathUtils {
// }
