【问题标题】:Meaning of instance实例的含义
【发布时间】:2015-10-24 07:31:05
【问题描述】:

实例在编程意义上是什么意思?请举例说明。另外,下面几行是什么意思?

我正在编写以下代码:

MyClass obj;

现在,我说“obj 是对 MyClass 实例的引用。”

虽然我说上面这行,但我无法理解“引用MyClass 的实例”这行的含义。这是否意味着obj 是对MyClass 对象的引用?

【问题讨论】:

  • 我想你忘记发布代码了。
  • 不...我已经用粗体字提到了代码...它的 MyClass obj;
  • 当我执行var x = new Something(); 时,我实例化 Something。变量x引用的对象是我实例化Something实例。我可能有其他变量引用的同一类的其他实例
  • @Ant P:感谢您的回答。但是,我想知道实例的含义。正如您所说,变量 x 引用的对象是我实例化的 Something 的实例。我想了解实例的含义。这个词我不清楚。
  • 类是一个对象的蓝图。实例是从该蓝图创建的实际对象。引用就像指向在内存中创建的那个实例的指针。

标签: oop object reference instance


【解决方案1】:

“实例”(类)只是“对象”的另一种说法。

【讨论】:

    【解决方案2】:

    班级: 在 Java 等类范式语言中,类是模板。它是对操作环境的一系列指令,使其能够构造和使用对象。该类在其定义文件中定义其成员。 Java中一个类的成员是它的:

    • 字段:存储构成类状态的变量的变量

    • 方法:定义类行为的函数定义

    • 嵌套类:一个类可以在其中定义其他类

    • 嵌套接口:一个类也可以在里面定义接口

    实例: 实例是类的实际表示。内存中的这种表示可以称为对象或类实例(或更简单地说,只是实例)。

    为了更具体,让我们看一下 MyClass 类:

    public class MyClass {
        private int myField1;
        private String myField2;
    
        public MyClass(int f1, String f2) {
            this.myField1 = f1;
            this.myField2 = f2;
        }
        :
        :
    }
    

    MyClass 是一个类,它定义了两个实例字段,其中包含每个创建的 MyClass 对象(myField1 和 myField2)的状态信息。它还定义了一个 Constructor,它指示 Java 如何构建 MyClass 对象。这里构造函数接受两个参数,并使用它们来初始化实例字段。

    这段代码:

    MyClass obj = new MyClass(7, "Hello");
    

    这个语句实例化一个MyClass对象的新实例,它使用构造函数MyClass(int, String)。创建的实例将具有myField1 = 7 和myField2 = "Hello"。最后,指向实例化对象的引用被分配给变量obj。在 Java 中,所有对象都是引用类型。对象永远不能存储到变量中。相反,指向对象在内存中的位置的指针(或引用)存储在变量中。

    TLDR:类是一组相关对象的模板。实例是类的实际表示,使用其模板构建。

    【讨论】:

      【解决方案3】:

      如果柜台上有两个苹果,每个苹果都是一个苹果的实例。如果您的程序包含三个变量,数字分别为 1、2 和 3,则每个变量都是整数的一个实例。

      实例只是抽象事物的特定版本。当您创建一个类并从该类创建一个对象时,该对象就是一个实例。如果你从你的类中创建三个对象,你就有了三个实例。

      【讨论】:

        【解决方案4】:

        让我们来说明这一切,但不要太抽象:

        • 一个类定义一个概念。
        • 实例是该概念的具体、真实的体现。

        例如。

        • 键盘是我可以按字母的东西(一个概念)
        • 我正在输入此答案的特定键盘是键盘的具体、真实化身(实例)

        当你时:

        class MyClass {
          void method1() { ... }
        }
        

        您定义 MyClass 定义的对象的外观和行为

        当你时:

        MyClass obj;
        

        您实际上创建了一个与该定义相对应的对象

        【讨论】:

          【解决方案5】:

          实例只是一个对象。假设您有以下内容:

          class Car
          {
              int nWheels;
          }
          
          Car c = new Car();
          

          在这个 Java sn-p 中,您有一个类 Car,并正在创建一个名为 c 的变量,它是对 Car 的引用。现在在 C++ 和 Java 等流行语言中,关键字 new 的意思是“创建给定类的 instance(又名对象),并给我一个 reference ",这就是为什么 c 是一个参考。当变量是引用时,它基本上只是实际实例/对象在内存中的内存地址(引用实际上更多,但您可以这样想),而不是实际实例本身。因此,您可以对同一个对象有多个引用,更改一个,它们都会改变。

          假设你有代码

          Car car1 = new Car();
          Car car2 = new Car();
          

          那么car1car2 都是对单独实例的引用,因为它们都使用了构造函数。但如果你这样做了,

          car2 = car1;
          

          那么car2car1 仍然都是引用,但是它们都引用了同一个实例(Car car1 = new Car(); 行创建的对象,并且没有引用Car car2 = new Car(); 行创建的对象。

          【讨论】:

            【解决方案6】:

            当您执行MyClass obj = new MyClass() 之类的操作时,您会创建一个实例。

            obj 是对 MyClass 实例的引用

            也许这是最正确的说法,但通俗地说,我只想说objMyClass 类的一个实例。

            忘记实例在 CS 世界中的含义。想想这个词在英语中的意思。

            某事的一个例子或单次出现。

            MyClass obj1 = new MyClass();
            MyClass obj2 = new MyClass();
            

            obj1obj2 是类的实例,因为它们只是它的出现。

            我们说“引用”,因为变量只是一个引用实际实例的符号。就像int x = 5x 在技术上不是 5 时一样,它只是一个表示该值的符号。

            【讨论】:

            • obj1 and obj2 are instances of the class since they are simply an occurrence of it. 不属于班级。它们是对类实例的引用
            • 我最后的澄清是否解释了这一点?我从简化开始,然后解释了为什么我们说“参考”。还是我应该改写答案?
            猜你喜欢
            • 1970-01-01
            • 2018-08-24
            • 2012-08-28
            • 2013-12-26
            • 1970-01-01
            • 2020-12-19
            • 2018-12-03
            • 2019-12-08
            • 2020-08-06
            相关资源
            最近更新 更多