实例和对象有什么区别?是否存在差异?
实例是内存中的对象。基本上,您创建对象并在使用它们时将其实例化。
这是关于Classes Vs Objects Vs Instances的一个很好的写作,他正在谈论Java,但它适用于所有OO。
http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/
Object - 具有自己的状态并访问其类所定义的所有行为的类的实例。
实例 - 引用该特定类的内存区域。
每个对象都被认为是它的类的一个实例,但是每个类的实例都有自己的值,每个属性的intances共享属性名称和操作与它们的类的内容,但是一个对象包含对他的类的隐式引用
如果我们看到对象和实例对象的定义 -
在运行时为类成员分配的内存称为对象或对象是Class的实例。
让我们看看实例的定义 -
在运行时为Any分配的内存称为实例变量。
现在通过Malloc,Calloc,Realloc等理解C中发生的任何运行时内存分配的含义:
struct p
{
}
p *t1
t1=(p) malloc(sizeof(p))
所以这里我们也分配运行时内存分配,但是这里我们称之为实例,因此t1是实例,我们不能将t1称为对象,因此每个对象都是Class的实例,但每个Instance都不是Object。
类:一类是蓝图。对象:它是类的副本。实例:它是一个用于保存对象内存地址的变量。
一个非常基本的分析例子
Class House - >房子的蓝图。但你不能生活在蓝图中。你需要一个物理的房子,它是居住的类的实例。即,对象的实际地址是实例。实例代表对象。
Java是一种面向对象的编程语言(OOP)。这意味着,除了基本类型之外,Java中的所有内容都是一个对象。
现在,Java对象与现实世界对象类似。例如,我们可以用Java创建一个car对象,它将具有当前速度和颜色等属性;和行为如:加速和停车。
那是对象。
另一方面,实例是该对象的唯一初始化副本,看起来像Car car = new Car()
。
请查看以了解有关Java classes and object的更多信息
快速简单的答案
一个对象可以是一个类,比如你有一个叫做篮球的类。
但是你想拥有多个篮球,所以在你的代码中你创造了超过1个篮球
说篮球1和篮球2。然后运行您的应用程序。你现在有2个对象篮球实例。
一旦实例化了一个类(使用new),该实例化的东西就变成了一个对象。对象是可以遵循面向对象编程的封装,多态,抽象原则以及程序与之交互以消耗类中定义的实例成员的真实对象。对象包含实例成员(非静态成员)。
因此,类的实例是一个对象。当你指的是它出生地的起源时,使用“实例”这个词,如果你说“类的实例”与“类的对象”相比,它会更清晰(虽然后者可以用来)。
还可以在嵌套类--https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html上阅读此java文档的“内部类”部分
关于object
和instance
之间的区别,我认为没有任何共识。
在我看来,人们在论文,博客文章,书籍或对话中几乎可以互换地改变它。
至于我,我看到它的方式是,一个对象是内存中的通用和活动实体,由它所使用的语言指定。就像Object
中的Java
类一样。我们不关心它的类型或与之相关的任何其他东西,无论它是否由容器管理。
instance
是object
但与类型有关,如this method accepts Foo instances
或you can not put Animal instances in an instance of
a List of Vehicles
。
例如,object
s有locks
与他们相关,而不是instance
s,而instance
s有方法。 objects
是垃圾收集,而不是instance
s。
但正如我所说,这只是我看到它的方式,而且我认为我们之间没有任何组织可以参考它们之间的标准定义,而且每个人的理解/定义都会略有不同(当然在限制范围内) 。
对象是一般的东西,例如,在数学中采用线性函数
ax + b是一个对象,而3x + 2是该对象的一个实例
对象<<<实例
一般<<<具体
没有更多的东西
应该消耗太多的时间,没有真正的重大差异。可能有一些奇特的语言,有些人可能会占用很多空间来写,但最终,就编码人员,开发人员,程序员,架构师而言,一个类的实例和一个对象意味着相同的东西,通常可以互换使用。在我的职业生涯中,我从来没有见过任何会挑剔的人,花半个小时试图指出差异,因为实际上没有。时间可以更好地用于其他开发工作。
更新关于Swift,这就是发明Swift的Apple所喜欢的:
传统上,类的实例称为对象。但是,Swift类和结构在功能上比在其他语言中更接近,本章的大部分内容描述了可以应用于类或结构类型的实例的功能。因此,使用了更通用的术语实例。
对象引用类,实例引用对象。换句话说,实例是具有特定值的对象的副本。
好问题。
我会用最简单的方式解释一下:假设你的篮子里有5个苹果。这些苹果中的每一个都是Apple类型的对象,其具有一些特征(即大的,圆形的,在树上生长)。
在编程术语中,您可以拥有一个名为Apple的类,其变量大小为:大,形状:圆形,栖息地:在树上生长。要在你的篮子里放5个苹果,你需要实例化5个苹果。 Apple apple1, Apple apple2, Apple apple3 etc...
。
或者:对象是某些东西的定义,实例是物理的东西。
这有意义吗?
实例:实例意味着只创建一个引用(副本)。
object:表示当使用new运算符将内存位置与对象关联时(是类的运行时实体)。
简单来说,Instance指的是特定时间对象的副本,而object指的是类的内存地址。
假设你正在建造一些椅子。
显示如何构建椅子并将其组合在一起的图表对应于软件类。
假设您根据该图中的模式构建了五把椅子。同样,您可以根据类中的模式构造五个软件对象。
每把椅子都有一个唯一的号码,烧在座位的底部,以识别每个特定的椅子。椅子3是椅子对象的一个实例。同样,存储器位置3可以包含软件对象的一个实例。
因此,实例(主席3)是对象(椅子)的单个唯一,特定表示。
宾语:
它是一个通用术语,基本上它是一个包含状态(变量)和行为(方法)的软件包
类:
对象实例的蓝色打印(模板) - 它是一个唯一的对象事物,例如你创建一个对象,这意味着你创建了两个实例
让我举个例子
Class student()
{
private string firstName;
public student(string fname)
{
firstName=fname;
}
Public string GetFirstName()
{
return firstName;
}
}
对象示例:
学生s1 =新生(“马丁”);学生s2 =新生(“Kumar”);
s1,s2具有类Student的对象
例如:
s1和s2是对象学生的实例,两者是唯一的。
它也可以作为参考。
基本上s1和s2是分配了一个对象的变量
对象和实例大多相同;但有一个非常小的差异。如果Car
是一个类,3个Car
s是3个不同的对象。所有这些对象都是实例。所以这三辆车是来自Car
级别的实物。
但“实例”这个词也可以表示“结构实例”。但对象仅适用于类。
所有对象都是实例。并非所有实例都必须是对象。实例可以是“结构实例”或“对象”。我希望这能让你明白这一点。
对象是一个构造,一个静态的东西,具有某些特征和特征,例如属性和方法,它可以是任何东西(字符串,用户控件等)
实例是该对象的唯一副本,您可以使用它并执行操作。
想象一下像电脑这样的产品。
xw6400工作站是一个对象
您的xw6400工作站(或您的WIFE的xw6400工作站)是xw6400工作站对象的一个实例
实例是对象的特定表示。对象是通用的,而实例是在内存中创建的单个对象。通常,实例将为其属性分配值,以将其与对象类型的其他实例区分开来。