作为我的AP课程的一部分,我正在学习对象,实例,引用等......所以从我的理解中,引用是指向某个东西的变量:值,类等。 。 。因此,说对象是对类的引用是合法的吗?
注意:我知道这是主观的,但我似乎无法在其他任何地方找到这样的比较。
答案 0 :(得分:3)
通过引用的通常定义,你可以不这样说。正确的是“一个对象是一个类的实例。”。
引用的通常定义是指向通常由某个对象占用的内存位置的值。指针和引用之间的区别在于,您可以在前者上执行指针算术,但不能在后者上执行。
例如,在以下代码段中:
SomeClass o = new SomeClass();
SomeClass foo = o;
SomeClass
是类,o
是对此SomeClass
关键字的特定调用返回的new
实例的引用。 new SomeClass()
为SomeClass
的新实例分配内存,并调用其构造函数对其进行初始化。 foo
是对SomeClass
所引用的o
的同一个实例的另一个引用。换句话说,o
和foo
指向同一个对象但不是相同的参考。
答案 1 :(得分:2)
Object不是类的引用,而是类的实例。
答案 2 :(得分:1)
不,这不是一个有效的陈述。对象是类的实例,而不是对类的引用。当你有类似的东西时:
MyClass var = new MyClass();
然后var
是对其所分配的MyClass
实例的引用(new MyClass()
)。此实例又是对象。
来自JLS §4.3.1:
对象是类实例或数组。
参考值(通常只是引用)是指向这些对象的指针,以及一个特殊的空引用,它指的是没有对象。
答案 3 :(得分:1)
正如其他人所说,一个班级就像一个蓝图。当您基于类创建对象时,计算机通过分配内存来“构建”对象,以根据您的类创建“部件”(变量)。
因此,该对象不是对该类的引用,暗示该对象只是将您重定向到该类。
该对象是该类的实例。
答案 4 :(得分:0)
对象实际上是一个类的实例。假设我们有String类。 String类型的对象是String类的实例,不是该类本身。给定String s="foo"
,s
的值将是对String类实例的引用。
现在,每个类都有一个与之关联的java.lang.Class
对象,因此String.class
是对java.lang.Class实例的引用。
来自JLS:
对象是类实例或数组。
参考值(通常只是引用)是指向这些对象的指针,以及一个特殊的空引用,它指的是没有对象。
答案 5 :(得分:0)
没有。这就像是说你今天早上吃的碎鸡蛋是对抽象蛋的抽象概念的参考。
请记住,class
是一个蓝图,但它本身并不是一个实际的具体对象。只有在通过new
关键字实例化对象时才会发生这种情况。
答案 6 :(得分:0)
Object foo = new Object();
foo
是对类Object
的特定具体实例的引用,但不是对类本身的引用。
Class bar = Object.class;
bar
是对Object
类的引用。