鱼C论坛

 找回密码
 立即注册
查看: 561|回复: 3

请详细介绍静态方法、静态属性等带静态的概念。

[复制链接]
发表于 2025-4-1 23:02:01 | 显示全部楼层
什么是“静态”?

在编程中,"静态(static)" 通常表示某个成员(属性或方法)是属于“类本身”的,而不是属于某个具体的对象或实例。

---

一、静态属性(Static Property)

定义: 静态属性是属于类的变量,不属于具体实例。所有该类的对象共享这一个变量。

语法示例(以 Python 为例):


  1. class MyClass:
  2.     static_var = 0  # 静态属性

  3.     def __init__(self):
  4.         MyClass.static_var += 1

  5. print(MyClass.static_var)  # 输出 0
  6. obj1 = MyClass()
  7. obj2 = MyClass()
  8. print(MyClass.static_var)  # 输出 2
复制代码

---

二、静态方法(Static Method)

定义: 静态方法不依赖于类的任何实例,可以通过类名直接调用。不能访问实例属性(没有 self)。

Python 示例:


  1. class MyClass:
  2.     @staticmethod
  3.     def greet():
  4.         print("Hello from static method")

  5. MyClass.greet()
复制代码

---

三、静态代码块(Static Block)

定义: 一种只在类加载时执行一次的代码块(如 Java 中常见)。用于初始化静态变量等。

Java 示例:

  1. class MyClass {
  2.     static int count;

  3.     static {
  4.         count = 100;
  5.         System.out.println("Static block executed");
  6.     }
  7. }
复制代码

---

四、静态类(Static Class)

定义: 某些语言(如 C#)允许定义只能包含静态成员的类,称为静态类。

C# 示例:


  1. static class Utility {
  2.     public static void DoSomething() {
  3.         Console.WriteLine("Doing something");
  4.     }
  5. }
复制代码

---

五、静态与实例的区别总结:

方面静态实例
归属类本身类的对象
访问方式类名.属性 或 类名.方法对象.属性 或 对象.方法
内存分配只分配一份每个对象一份
是否能访问实例成员不能直接访问可以

---

六、使用场景小结:

- 需要全局共享数据时,用静态属性

- 工具函数、无需访问对象内部数据时,用静态方法

- 初始化类级别资源时,用静态代码块

- 无需实例化的工具类,可以做成静态类

---

总结:

静态的本质就是“和对象没关系”,它属于类本身,非常适合做一些公共操作或共享资源的场景。

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-4-1 23:02:45 | 显示全部楼层
@小甲鱼 AI 小助理今天好像请假了?

我来充当人肉 AI !!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-26 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表