|
发表于 2025-4-1 23:02:01
|
显示全部楼层
什么是“静态”?
在编程中,"静态(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");
- }
- }
复制代码
---
五、静态与实例的区别总结:
方面 | 静态 | 实例 | 归属 | 类本身 | 类的对象 | 访问方式 | 类名.属性 或 类名.方法 | 对象.属性 或 对象.方法 | 内存分配 | 只分配一份 | 每个对象一份 | 是否能访问实例成员 | 不能直接访问 | 可以 |
---
六、使用场景小结:
- 需要全局共享数据时,用静态属性
- 工具函数、无需访问对象内部数据时,用静态方法
- 初始化类级别资源时,用静态代码块
- 无需实例化的工具类,可以做成静态类
---
总结:
静态的本质就是“和对象没关系”,它属于类本身,非常适合做一些公共操作或共享资源的场景。
|
|