【问题标题】:Why do we create instances of classes?为什么我们要创建类的实例?
【发布时间】:2014-02-10 11:03:50
【问题描述】:

我正在学习 C#,我想知道为什么我们要创建类的实例。

Customer myCustomer = new Customer();
myCustomer.name = "harry";

当我在线搜索时,我总是得到“如何制作实例”,但这不是我的问题。 我知道怎么做。 为什么是我的问题。 是因为我们像使用数据类型一样使用它们吗?喜欢复杂的数据类型。

【问题讨论】:

  • 没错,因为我们把它们当做数据类型。

标签: c# class instance


【解决方案1】:

假设您正在构建一些联系人应用程序。然后,将有一个名为 Contact 的类。您将为需要保存的每个联系人创建一个 Contact 类的实例。您不能在单个实例中保存所有联系人。每个联系人都有不同的属性。比如名字、姓氏、电子邮件、电话号码等。

在上面的代码示例中,您正在尝试创建一个客户实例。如果您有很多客户,那么您肯定会为每个客户创建一个实例来跟踪所有客户。

【讨论】:

    【解决方案2】:

    我们经常使用一个类来表示我们系统中的一个特定实体。在您的示例中,您有一个代表客户的类。但是(希望)您有不止一位客户!为了表示这一点,您有两个客户类实例,一个用于 Harry,一个用于 Jerry。

    Jerry 和 Harry 是两个不同的客户,但您的系统包含有关每个客户的相同信息(他们的姓名、客户订单、最近购买等)。

    当需要扩展您的系统以包含不同的商店时,您将创建一个名为 Shop 的新类,其中的实例代表您的伦敦、纽约和悉尼商店。

    【讨论】:

      【解决方案3】:

      一个类的实例获得一块分配给它的内存来存储它的内部变量。这意味着一个实例的变量与另一个实例的变量是隔离的。

      【讨论】:

        【解决方案4】:

        如果这是你的第一个面向对象的编程语言,你问这个是正确的,那么了解它是如何工作的很重要。

        一个类是由它的方法和属性定义的,但是你需要实例化它才能开始使用这些方法并给属性赋值,例如:

        myCustomer.name = " harry" 
        

        在这种情况下,“name”是 Customer 类的一个属性,您将 harry 的名称设置为仅实例化的 Customer,而不是类,该类没有任何值,只有定义的属性和方法。

        方法也一样,例如:

        myCustomer.setName("harry"); 
        

        (如果属性“name”是私有的)

        你从主类实例化和调用方法,其他类定义方法和属性,然后使用它们实例化。

        另请参阅:CodeProject introduction to OOPWikipedia article Class

        【讨论】:

        • 类可以有值,也可以有方法,无需实例化。
        【解决方案5】:

        嗯,我想你基本上回答了你自己的问题没有?

        因为class 只是一种类型。如果我说,Customer 今天来到商店,你就会了解一个人的类型,一个客户。但如果我说"Harry" 是我店里的一位顾客,你就会明白我只是在说一个Customer。我对"Harry" 的看法对他来说是独一无二的,与其他所有Customers 的整体关系不大。

        Customer myCustomer = new Customer();
        myCustomer.name = "harry";
        

        我的意思是,它几乎完全是人类可读的。这样想:

        // Type   // instance
        Color     myColor = new Color(255,0,0); // red
        

        【讨论】:

          猜你喜欢
          • 2011-07-05
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 2019-02-17
          • 2022-01-13
          • 2021-03-23
          相关资源
          最近更新 更多