Java 常量 final 关键字
final
修饰变量: 一个变量可以声明为 final,这样做的目的是 阻止内容被修改 (类似于 C/C++中的 const),final 变量的所有字符选择大写是一个普遍的编码约定,用 final 修饰的变量在实例中 不占用内存 ,它实质上是一个常数
final
修饰方法: 被 final 修饰的方法 可以被子类继承,不能被子类的方法覆盖 ,因此,如果一个类不想让它的子类覆盖它的某个成员方法,就可以在该成员方法前面加上 final 关键字.由于父类中的 private 成员方法是不能被子类覆盖的, 所有 private 的成员方法默认也是 final 的 。使用 final 修饰方法除了不想让子类覆盖之外,还有一个原因就是 高效 ,Java 编译器在遇到 final 关键字修饰的方法时会使用 内联机制 ,省去函数调用的开销,提高效率。
final
修饰类: 由 final 修饰的类是 不能继承 的。
在 Java 中, final
关键字用来修饰类、方法和变量,具有不同的含义和用途。主要用途是表示不可改变的,其行为取决于它所修饰的对象类型。
1. final 修饰变量
使用 final
关键字修饰变量表示该变量只能被赋值一次,即它是一个常量。有几种情况可以使用 final
修饰变量:
- 实例变量(成员变量) :在声明时赋值或在构造函数中赋值,并且一旦赋值后不能再修改。示例:
public class MyClass {
final int MAX_COUNT = 100;
}
- 静态变量(类变量) :在声明时赋值或在静态初始化块中赋值,并且一旦赋值后不能再修改。示例:
public class Constants {
public static final double PI = 3.14159;
}
- 局部变量 :在声明时赋值,并且一旦赋值后不能再修改。示例:
public void exampleMethod() {
final int localVariable = 10;
// localVariable = 20; // 编译错误,无法修改 final 变量的值
}
2. final 修饰方法
使用 final
关键字修饰方法表示该方法不能被子类重写(覆盖)。通常用于确保方法的实现不会被修改或扩展。示例:
public class Parent {
public final void finalMethod() {
// 方法实现
}
}
public class Child extends Parent {
// 无法重写 Parent 类中的 finalMethod 方法
// public void finalMethod() { ... } // 编译错误
}
3. final 修饰类
使用 final
关键字修饰类表示该类不能被继承,即不能有子类。示例:
public final class FinalClass {
// 类定义
}
// 无法继承 FinalClass 类
// public class SubClass extends FinalClass { ... } // 编译错误
主要特性和用途
- 不可变性 :使用
final
修饰的变量不能改变其值,类不能被继承,方法不能被重写,这有助于确保代码的安全性和稳定性。 - 效率 :对于
final
变量,编译器可能会进行优化,因为它们的值不会改变,可以在编译时就确定其值,而不必在运行时再计算。 - 安全性 :通过限制变量、方法和类的修改和继承,
final
提高了代码的安全性,减少了意外修改引起的错误。
注意事项
- 初始化 :
final
变量必须在声明时或构造函数中进行初始化,确保其值被设置且不会改变。 - 命名规范 :通常
final
常量名使用大写字母,多个单词用下划线分隔,例如MAX_COUNT
。 - 关于性能 :在一些情况下,使用
final
可能会对性能有微弱的提升,因为编译器可以进行更好的优化。
综上所述, final
关键字在 Java 中用于表示不可改变的常量、方法和类,通过其修饰可以提高代码的稳定性、安全性和性能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论