首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态修饰符在面向对象编程中的用途是什么?

静态修饰符在面向对象编程中的用途是什么?
EN

Stack Overflow用户
提问于 2011-04-27 19:35:50
回答 6查看 13.4K关注 0票数 17

在我的一次采访中,有人问我static修饰符是什么意思。我的回答是告诉面试官静态类的对象不能被创建,以及其他有用的观点。

但面试官问,创建这样一个对象不能被创建的类有什么用。基本上,他们问的是为什么首先需要static

我真的不确定该如何回答这个问题。我该说些什么呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-27 19:56:27

面试官可能希望你讨论面向对象的设计和模式,而不是他们想让你背诵特定修饰符的定义。这里真的没有正确的答案。纯粹主义者可能会争辩说,static是一个可恶的东西。实用主义者可能会争辩说,它填补了“一切都是对象”抽象中的漏洞,允许您调用实用程序方法,对于这些方法来说,仅仅为了调用它们而实例化一个新对象是没有意义的。最典型的例子就是System.Math class

大多数程序员遵循的一般经验法则是,如果您正在操作的数据与对象的任何特定实例没有关联,那么将该字段/方法标记为静态可能是有意义的。否则,它可能应该是对象实例的常规成员。

MSDN documentation已经有了一个很好的解释:

使用static修饰符来声明静态成员,该成员属于类型本身而不是特定对象。static修饰符可以与类、字段、方法、属性、运算符、事件和构造函数一起使用,但不能与索引器、析构函数或类以外的类型一起使用。有关详细信息,请参阅Static Classes and Static Class Members (C# Programming Guide)

static修饰符在C#中还有更具体的用法,比如定义扩展方法(只能在静态类中定义)、定义互操作方法等。还值得注意的是,所有静态类在C#中都是sealed,因为如果没有构造函数,就不能继承它们。

票数 22
EN

Stack Overflow用户

发布于 2011-04-27 19:39:54

静态不只适用于类,成员也可以是静态的。使用静态的原因是为了提供实用程序类型的功能,而实例化一个对象来使用它是没有意义的。例如,为什么要创建一个int来使用int.Parse()

票数 3
EN

Stack Overflow用户

发布于 2011-04-27 20:01:06

您可以查看与对象/类的状态相关的“静态”。

当您的类不需要维护单个对象的静态状态信息,而是维护类的状态信息时,可以使用静态静态。静态变量就是一个例子。

  • 另一件事是将类本身声明为静态,而在对象中不能实例化,您可以调用静态方法,这些方法不需要有自己的状态信息。

其他人已经举出了一些有用的例子,我不再重复。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5803407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档