首页 > 解决方案 > 什么是不是实例的对象,反之亦然?

问题描述

我试图了解对象和实例之间的区别,在某些论坛中它被提及为相同,而在其他论坛中被提及为不同。

Q.1如果我们用一个类的不同属性实例化 4 个不同的对象,比如说

Class A(..)
A a1 = new A(..1..)
A a2 = new A(..2..)
A a3 = new A(..3..)


然后是 A 的 a1、a2、a3对象或 A 的实例,或者我们可以同时说两者。是否存在仅 A 的对象或仅 A 的实例的情况?如果不是,是否有任何具体原因使用两个不同的术语?

Q2。

Class A(..)
A a1 = new A(..1..)
A a2 = a1


这里因为 a2 引用了 a1,所以现在 a1 和 a2 之间是否存在内存差异。
假设 A 类本身拥有 24 字节的内存
所以如果我们在第二行创建实例/对象(需要确认)。我们将为 a1 提供另外 24 字节的内存和额外的参考内存,对吧?引用的内存大小是多少。
我们还有另一个引用 a2,现在该 a2 的内存大小是多少,也是 24 字节 + 它自己的引用大小还是只是引用大小?


我用 C# 语法编写过。

标签: javac#oopdata-structures

解决方案


Q1 对象被定义为包含许多值的变量。

让我给你一个抽象的例子。假设有 10 位商人老师教一些学生成为商人。他们现在都是商人,学生或老师。但并非所有人都被教导。老师们正在把他们的知识传授给学生们。所以每个学生都是他们尊敬的老师的一个例子。

所以基本上,a1、a2 和 a3 是 A 的实例。因为 A 将他的值传递给了它们。尽管它们都是上面提到的定义的对象。A 是父母。

此外,您编写的语法不正确。

您需要使用 var、let 或 const。你需要使用这些类型的括号:

Class A {
 constructor (){}
}
var a1 = new A{..1..}
var a2 = new A{..2..}
var a3 = new A{..3..}

推荐阅读