type
status
date
slug
summary
tags
category
icon
password
Last edited time
Dec 30, 2025 10:43 AM
我的理解:
静态字段被类的所有实例共享,因此访问方式为class.field,not instance.field
静态方法只能访问静态字段,不能访问对象。
静态工厂方法可以用来构造对象。
静态字段、静态方法与静态工厂方法
1. 静态字段(Static Field)
- 静态字段是类级别的变量,属于类本身,而不是类的某个实例。
- 所有实例共享同一个静态字段,任何实例对静态字段的修改都会影响其他实例。
- 访问方式:
- 推荐通过
ClassName.field
访问静态字段,而不是通过instance.field
。 - 例子:
2. 静态方法(Static Method)
- 静态方法是属于类本身的方法,而不是类的某个实例的方法。
- 静态方法只能访问静态字段或调用其他静态方法,不能直接访问非静态字段或非静态方法(因为非静态成员依赖于特定实例,而静态方法不依赖于实例)。
- 访问方式:
- 推荐通过
ClassName.methodName
调用静态方法。 - 例子:
3. 静态工厂方法(Static Factory Method)
- 静态工厂方法是一种设计模式,它通过静态方法返回类的实例,而不是直接调用构造函数。
- 用途:
- 提供更灵活的对象创建方式,例如可以返回缓存的实例。
- 方法名称可以清晰描述创建的逻辑,增强代码可读性。
- 可以返回类的子类或接口实现。
- 特点:
- 静态工厂方法本身是静态方法,因此它不能直接访问非静态字段或非静态方法。
- 通常设计为
public static
,用户通过ClassName.methodName()
调用它。
- 例子:
4. 静态与非静态的区别总结
特性 | 静态(static) | 非静态 |
所属范围 | 类本身 | 类的某个实例 |
字段共享性 | 被所有实例共享 | 每个实例有独立的副本 |
访问方式 | 推荐通过 ClassName. 访问 | 必须通过实例访问 |
方法访问权限 | 只能访问静态字段和静态方法 | 可以访问任何字段和方法 |
依赖实例 | 不依赖任何实例 | 依赖于特定实例 |
小结
- 静态字段属于类,不属于对象,应该用
ClassName.field
访问。
- 静态方法属于类,只能访问静态字段和静态方法,应该用
ClassName.methodName
调用。
- 静态工厂方法是一种设计模式,提供创建类实例的更灵活方式。
- 静态成员与实例无关,因此在设计静态方法或字段时要特别注意线程安全问题(例如需要时使用
synchronized
或其他并发控制机制)。
- 作者:很久不是自己
- 链接:https://weibo.com/article/java-test
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。