对象与实例的区别
在网上随便逛,看到一个有趣的讨论:对象与实例的区别。作者是这样认为的:
表现出来是这样的
String 类
String str str是对象
String str = “abc”; “abc”是实例,也是对象.
这样也能解释instance of object这种说法 str的实例是”abc”
文章是在Java的背景下讨论的,我觉得这样的理解是不对的。说他不对,是因为这样的理解违反常识。”对象”,”实例”这两个词在Java中并没有非常严格,细致的定义。因此,应当从常识的角度去理解他们。
我的理解是这样的:对象是某个东西的实例。这句话简化一下,就是对象是实例。任何一个对象,它必定是某个东西的实例。而”某个东西”,我们在Java语言中,可以认为它是类(Class),而在其他地方,比如Semantic Web的一些规范中,如RDF我们可以将其认为是一个概念。在RDF中,概念的一个实例依然是一个概念。
在Java语言的前提下,我觉得对象跟实例所指向的东西是没有分别的。
而在更宽广的条件下(比如,机器学习中的一些概念),那就不一定了。实例这个词表达了一种特化的过程。而对象,只是简单的是这种特化的产物。比如这样的一个概念特化过程:Thing->Animal->Human->Chinese->Chen Ju,我们可以看到Animal是Thing的一个实例,它是一个对象。同时Human是Animal的一个实例,它也是一个对象。也就是说,一个对象可以是另外一个对象的实例。





