编程意义上的实例是什么意思?请举例说明。另外,以下几行是什么意思?
我正在编写以下代码:
MyClass obj;
现在,我说“obj
是对MyClass
实例的引用”。
虽然我说上面一行,但我无法理解“引用MyClass
实例”这一行的含义。这是否意味着obj
是对MyClass
的对象的引用?
答案 0 :(得分:3)
“实例”(一个类)只是说“对象”的另一种方式。
答案 1 :(得分:3)
<强>类:强> 在诸如Java的类范式语言中,类是模板。它是操作环境的一系列指令,使其能够构造和使用对象。该类在其定义文件中定义其成员。 Java中类的成员是:
fields :存储构成类状态的变量的变量
方法:定义表征类的行为的函数定义
嵌套类:一个类可以在其中定义其他类
嵌套接口:一个类也可以在其中定义接口
<强>实例强> 实例是类的实际表示。内存中的这种表示可以被称为对象或类实例(或者更简单地,只是实例)。
为了使其更具体,让我们看一下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(int,String)实例化 MyClass
对象的新实例。创建的实例将具有myField1
= 7和myField2
=“Hello”。最后,指向已实例化的对象的引用将分配给变量obj
。在Java中,所有对象都是引用类型。永远不能将对象存储到变量中。相反,对象在内存中的位置的指针(或引用)存储在变量中。
TLDR:该类是一组相关对象的模板。实例是类的实际表示,使用其模板构建。
答案 2 :(得分:2)
如果你在柜台上有两个苹果,每个苹果都是一个苹果的实例。如果您的程序包含三个数字为1,2和3的变量,则每个变量都是一个整数的实例。
实例只是抽象事物的特定版本。当您创建一个类,并从该类创建一个对象时,该对象就是一个实例。如果从类中创建三个对象,则有三个实例。
答案 3 :(得分:0)
当您执行publishParsedToDatetime
之类的操作时,您可以创建一个实例。
obj是对MyClass
实例的引用
也许这是最正确的说法,但通俗地说,我只是说tm_isdst=0
是班级MyClass obj = new MyClass()
的一个实例。
忘记在CS世界中应该表达什么样的实例。想想这个单词在英语中的含义。
某个例子或单个事件。
obj
MyClass
和MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
是该类的实例,因为它们只是它的出现。
我们说&#34;引用&#34;,因为变量只是一个引用实际实例的符号。就像obj1
,obj2
在技术上不是5时一样,它只是一个引用该值的符号。
答案 4 :(得分:0)
让我们在不过于抽象的情况下说明这一切:
例如。
当您说:
时class MyClass {
void method1() { ... }
}
您可以定义MyClass定义的对象的外观和行为
当您执行:
时MyClass obj;
您实际创建了与该定义相对应的对象
答案 5 :(得分:0)
实例只是一个对象。我们假设你有以下内容:
class Car
{
int nWheels;
}
Car c = new Car();
在此Java代码段中,您有一个类Car
,并且正在创建一个名为c
的变量,该变量是对Car
的引用。现在,在C ++和Java等流行语言中,关键字new
意味着&#34;创建给定类的实例(又名对象),并给我一个引用< / em> to it&#34;,这就是c
是参考的原因。当变量是引用时,它基本上只是实际实例/对象在内存中的内存地址(引用实际上更多,但你可以这样想),而不是实际的实例本身。因此,您可以对同一个对象进行多次引用,更改一个,然后它们都会发生变化。
假设您有代码
Car car1 = new Car();
Car car2 = new Car();
然后car1
和car2
都是引用来分隔实例,因为它们都使用了构造函数。但如果你这样做了,
car2 = car1;
然后car2
和car1
仍然是两个引用,但它们都引用相同的实例(由行Car car1 = new Car();
创建的对象,并且没有任何内容引用该行中创建的对象Car car2 = new Car();
。