Java中,作用域(Scope)指变量、方法或类的可访问性和生命周期,即他们在代码中的可见范围。作用域由声明的位置和修饰符共同决定。
一、变量的作用域
变量有以下五种作用域类型
作用域类型 | 声明位置 | 生命周期 | 访问范围 |
实例变量 | 类内,方法外 | 对象创建到销毁 | 类内所有非静态方法 |
静态变量 | 类内,方法外+static | 类加载到程序结束 | 类内所有方法,其他类通过类名 |
局部变量 | 方法/构造方法/块内 | 方法/块执行期间 | 声明处到方法/块结束 |
块变量 | 代码块内 | 块执行期间 | 块内部 |
方法参数 | 方法参数列表 | 方法调用期间 | 整个方法体 |
二、 方法的作用域
方法类型 | 可访问成员 | 调用方式 | 修饰符限制 |
实例方法 | 实例变量、静态变量、其他实例/静态变量 | 对象名.方法名() | 无特殊限制 |
静态方法 | 静态变量、其他静态变量 | 类名.方法名() 或 对象名.方法名() | 不能直接访问实例成员 |
访问修饰符(Access Modifiers): 用于控制类、变量、方法和构造方法的可见性和访问范围,是面向对象编程中**封装性(Encapsulation)**的核心机制。Java 提供了四种访问修饰符,按访问范围从宽到窄依次为:public
> protected
> 默认(无修饰符) > private
修饰符 | 可见性范围 | 典型用途 |
public | 全局可见 | 对外接口、工具类、常量 |
protected | 同一包、子类 | 允许子类扩展的受保护方法或变量 |
default | 同一包 | 包内共享的实现细节 |
private | 仅当前类 | 隐藏内部状态,强制通过方法访问 |
注意事项:
1、子类重写父类方法时,访问权限不能比父类范围更小
2、构造方法使用private修饰时,就是单例模式的要求之一,即不允许外部实例化