当我们在java中有基类和子类,并且我们实例化子类时,我们得到一个实例还是两个实例?如果我们得到两个对象,我们得到多少个实例?一个实例包含基类和子类的两个对象还是两个单独的实例?
6 回答
如果你实例化一个子类,你只会得到一个对象/实例。这个单一实例将包含子类的所有字段(包括由其父类定义的字段)。
请记住,子类意味着您正在定义一个从现有父类派生的新类,即它继承了这些定义。因此,如果父类声明了一个名为 的字段id
,则子类也将有一个名为 的字段id
,因此该子类的实例化将包含一个id
字段。该字段在父类中声明,但它确实属于子类。
如果实例化子类,则不会实例化父类。不存在其运行时类是父类的对象。
(我不确定您的问题中“对象”和“实例”之间的区别是什么。您以暗示它们不同的方式使用它们,但通常它们的含义完全相同。对象是实例特定类别的。)
您会得到一个属于两个类的单个实例 - 基类和子类。
试着用这个例子来理解它:有一个类 Mammal 和一个类 Human。你属于他们俩——尽管如此,你只有一个实例。如果房间里有两个人,您将拥有两个类的两个实例!
Instance == object ...两者都是相同的,只是两个不同的名称。如果您创建一个对象(可能是子类),您将获得一个对象。
那么实例和对象之间的逻辑区别是什么?
在您使用这些词的上下文中,没有区别。(类的)实例是对象,反之亦然。
但是,在更广泛的上下文中,(类型的)实例不一定是对象 - 它取决于类型。例如,您可以说这42
是该int
类型的“实例”。
当我们在java中有基类和子类,并且我们实例化子类时,我们得到一个实例还是两个实例?
我们得到一个实例,因为每个 Java 类实例都包含在一个对象中。
如果我们得到两个对象,我们得到多少个实例?
术语“实例”是对象的同义词。说一个实例只是说一个对象的另一种方式。
一个实例包含基类和子类的两个对象还是两个单独的实例?
不会。Java 编译器创建的类字节码包含基本功能和扩展功能,因此实例化该类会生成单个对象。
new classA(); //Here you create an instance of a class
classA ob //create object named "ob" and datatype "classA"
现在我们将实例分配给对象
classA ob = new classA();
喜欢
int num = 10