前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java final 的一些总结

java final 的一些总结

作者头像
潇洒
发布2023-10-20 10:06:30
1120
发布2023-10-20 10:06:30
举报
文章被收录于专栏:石头岛

特点

final 的含义是最终的、不可改变的。总结了一下 final 的一些规则。

  1. 修饰"类"则类不能被继承,所以没有子类,final类中的方法默认是final的。可以提高效率。JDK中很多加final是这个原因的。编译期确认调哪个方法,所以更快。1.5以后这样做没有效果。
  2. 修饰"方法"则方法不能被重写,
  3. 修饰"成员变量"则变量不以被改变,即被修饰成了常量。只能被赋值一次。
  4. 不能修饰构造方法
  5. 父类中的private成员方法是不能被子类覆盖的,因为private类型的方法默认是隐式final类型的
  6. final 的引用不能指向新的对象。
  7. 形参声明为 final,则方法内不能再改变其:
    1. 基础数据类型值不可被修改
    2. 传入对象不能再被 new
  8. 继承关系时,final 的方法将不会被子类重写。所以父类使用的仍是本类自己的方法。
  9. final 类不可被继承。

C++ 也有final关键字,在C++11及以后的标准中引入了final,final关键字用于修饰类、成员函数和虚函数,表示它们是最终版本,不能被继承或重写。

代码示例

  1. final修饰类: 当我们使用final关键字修饰一个类时,表示该类是不可继承的。这意味着其他类无法扩展这个被final修饰的类。这通常用于确保类的安全性和完整性。
代码语言:javascript
复制
final class FinalClass {
    // 类的内容
}

// 下面的代码会导致编译错误,无法继承FinalClass类
// class SubClass extends FinalClass {}

在上面的示例中,FinalClass被声明为final,因此无法被其他类继承。

2.final修饰方法:

当我们使用final关键字修饰一个方法时,表示该方法不可被子类重写。这主要应用在一些核心方法或者是已经实现完善的方法上,以防止子类对其进行修改。

代码语言:javascript
复制
class BaseClass {
    // final方法
    final void finalMethod() {
        // 方法的实现
    }
}
class SubClass extends BaseClass {
    // 下面的代码会导致编译错误,无法重写finalMethod方法
    // void finalMethod() {}
}

在上述示例中,finalMethod被声明为final,因此无法在子类中进行重写。

  1. final修饰变量: 当我们使用final关键字修饰一个变量时,表示该变量是一个常量,一旦被赋值后就不能再进行修改。这种变量通常被称为"不可变变量"。使用final修饰变量可以提高程序的可读性和安全性,同时还能提供一定程度的性能优化。
代码语言:javascript
复制
class ImmutableClass {
    final int constantValue = 10; // 常量

    void modifyValue() {
        // 下面的代码会导致编译错误,常量无法被修改
        // constantValue = 20;
    }
}

在上述示例中,constantValue被声明为final,因此它的值无法被修改。

  1. final与继承: 当一个类被声明为final时,它不能被其他类继承。这是为了防止其他类对该类进行修改或者破坏。同时,final类的方法默认也是final的,因此无法被子类修改。
  2. final与性能: 使用final关键字可以带来一些性能上的优化。由于final修饰的方法无法被重写,编译器可以进行方法内联优化,减少方法调用的开销。同样,final修饰的变量在编译时会被直接替换为常量值,避免了变量读取的开销。
  3. final与线程安全: 在多线程环境下,使用final关键字可以提供一定的线程安全性。当一个对象被声明为final时,它的状态无法改变,从而避免了多线程并发修改的问题。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特点
  • 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档