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

本文关键字:是什么 面向对象编程 静态 | 更新日期: 2023-09-27 17:53:28

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

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

我真的不知道如何回答那个问题。我该说什么?

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

面试官可能希望您讨论面向对象的设计和模式,而不是让您背诵特定修饰符的定义。这里真的没有正确的答案。纯粹主义者可能会说,static是一种令人憎恶的东西。实用主义者可能会争辩说,它填补了"一切都是对象"抽象的空白,允许您调用实用程序方法,而实例化一个新对象只是为了调用它们是没有意义的。典型的例子是System.Math类。

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

MSDN文档已经有一个很好的解释:

使用static修饰符声明静态成员,该成员属于类型本身而不是特定对象。静态修饰符可以与类、字段、方法、属性、操作符、事件和构造函数一起使用,但不能与索引器、析构函数或类以外的类型一起使用。有关更多信息,请参见静态类和静态类成员(c#编程指南)。

static修饰符在c#中也有更具体的用途,例如定义扩展方法(只能在静态类中定义),定义互操作方法等。同样值得注意的是,c#中所有的静态类都是sealed,因为没有构造函数,它们不能从。

继承。

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

呢?

您可以根据对象/类的状态来查看"static"

  1. "static"用于当你有一个类不需要为单个对象维护状态信息,而是为类维护状态信息时。静态变量就是一个例子。
  2. 另一件事是声明一个类本身为静态的,在对象不能被实例化的地方,你可以调用静态方法,而不需要有自己的状态信息。

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

参见http://msdn.microsoft.com/en-us/library/79b3xss3%28v=vs.80%29.aspx -它解释了静态类的优点。

使用静态类的优点是编译器可以检查以确保没有意外添加实例成员。编译器将保证不能创建该类的实例。

static修饰符表示类的成员属于类本身,而不属于类的实例。

静态成员不能在应用程序中复制,即使创建了许多类的实例。

参见下面的链接获取更多信息静态修饰符

参见下面使用静态成员的示例类:

class myClass
{
    static int x = 5;
    static string name = "Ashraf";
    public int X 
    {
        get {return x;}
        set {x = value;}
    }
    public string name 
    {
        get {return name;}
        set {name = value;}
    }
}

静态类在操作外部数据时非常有用,并且不需要在其中设置或检索任何字段