什么是“静态”?
在编程中,"静态(static)" 通常表示某个成员(属性或方法)是属于“类本身”的,而不是属于某个具体的对象或实例。
---
一、静态属性(Static Property)
定义: 静态属性是属于类的变量,不属于具体实例。所有该类的对象共享这一个变量。
语法示例(以 Python 为例):
class MyClass:
static_var = 0 # 静态属性
def __init__(self):
MyClass.static_var += 1
print(MyClass.static_var) # 输出 0
obj1 = MyClass()
obj2 = MyClass()
print(MyClass.static_var) # 输出 2
---
二、静态方法(Static Method)
定义: 静态方法不依赖于类的任何实例,可以通过类名直接调用。不能访问实例属性(没有 self)。
Python 示例:
class MyClass:
@staticmethod
def greet():
print("Hello from static method")
MyClass.greet()
---
三、静态代码块(Static Block)
定义: 一种只在类加载时执行一次的代码块(如 Java 中常见)。用于初始化静态变量等。
Java 示例:class MyClass {
static int count;
static {
count = 100;
System.out.println("Static block executed");
}
}
---
四、静态类(Static Class)
定义: 某些语言(如 C#)允许定义只能包含静态成员的类,称为静态类。
C# 示例:
static class Utility {
public static void DoSomething() {
Console.WriteLine("Doing something");
}
}
---
五、静态与实例的区别总结:
方面 | 静态 | 实例 | 归属 | 类本身 | 类的对象 | 访问方式 | 类名.属性 或 类名.方法 | 对象.属性 或 对象.方法 | 内存分配 | 只分配一份 | 每个对象一份 | 是否能访问实例成员 | 不能直接访问 | 可以 |
---
六、使用场景小结:
- 需要全局共享数据时,用静态属性
- 工具函数、无需访问对象内部数据时,用静态方法
- 初始化类级别资源时,用静态代码块
- 无需实例化的工具类,可以做成静态类
---
总结:
静态的本质就是“和对象没关系”,它属于类本身,非常适合做一些公共操作或共享资源的场景。
|