Skip to content
基础

一句话答案

static 修饰的成员属于类而非实例:静态变量(类共享)、静态方法(无 this)、静态块(类加载时执行)、静态内部类。

核心要点

执行顺序: 父类静态块 → 子类静态块 → 父类构造 → 子类构造

注意: 静态方法不能访问非静态成员 / 不能被override(可以隐藏)

追问与易错

追问方向:

  • 静态方法能调用非静态方法吗?(不能直接调用,需通过实例)
  • 静态内部类和非静态内部类的区别?(静态不持有外部类引用,不会内存泄漏)
  • 类的初始化顺序?(父类静态→子类静态→父类实例/构造→子类实例/构造)

易错点:

  • ❌ "static 方法可以被重写"——不能重写只能隐藏(hide),多态对静态方法无效
  • ❌ 滥用静态变量作为缓存——全局可见+GC 无法回收,容易内存泄漏

💡 记忆锚点

static成员是"班级公告栏",属于班级不属于个人:静态变量全班共享,静态方法不认识this,静态块在班级成立时(类加载)就执行。初始化顺序:先爸后儿,先静态后实例。