day05-Static-Final

static&final

😚

核心区别final 修饰类表示该类不可被继承static 修饰类(仅内部类)表示该内部类不依赖外部类实例即可创建。二者修饰目标和作用完全不同,没有直接可比性。

java.util.Arrays 被声明为 final class Arrays,核心目的是禁止继承,确保其工具类的设计不被篡改。

  • 工具类通常只包含 static 静态方法(如 sort()toString()),无需创建实例,也不希望被其他类继承后重写方法、破坏功能稳定性。

static 修饰类的场景(仅内部类)

static 不能修饰顶级类(如 Arrays 这种直接定义在包下的类),只能修饰内部类(即 static inner class,静态嵌套类),作用是解除对外部类实例的依赖

  • 非静态内部类:必须先创建外部类实例,才能创建内部类实例(内部类隐含持有外部类的引用)。
  • 静态内部类:无需外部类实例,可直接通过 外部类.静态内部类 创建实例,更像一个独立的 “顶级类”。
class Outer {
    static class StaticInner {} // 静态内部类,可直接 new Outer.StaticInner()
    class NonStaticInner {}    // 非静态内部类,必须先 new Outer() 才能 new Outer().new NonStaticInner()
}

也就是说为了保证工具类不被修改和破坏,就用final,而static的不依赖外部类就可以创建了。

那对应方法修饰的时候?两者有区别和联系吗?

static 修饰方法:“类级方法”,调用更便捷

final 修饰方法:“不可变方法”,逻辑更安全

posted @ 2025-08-31 21:12  Billmu  阅读(4)  评论(0)    收藏  举报