类是否与Object相同

时间:2014-10-01 05:26:54

标签: java class object instantiation

如果我有

class A{ }

class B extends A{ }

我实例化一个引用变量" var"

A var = new B();

" var"然后被认为被实例化为" B"宾语?其中A是变量引用类型,而不是为" var"。

实例化的Object

5 个答案:

答案 0 :(得分:0)

无论你如何引用它,对象类型仍然是B.也就是说,代码var.getClass()将返回B而不是A,因此“var”的类是B.

您也可以说“var”是A的实例,代码boolean isA = (var instanceof A)将返回true,但var.getClass()不会返回A.

答案 1 :(得分:0)

AB都是类。类是蓝图,对象是类的实例化。

但是,变量既不是对象也不是对象。变量仅保存对象的位置。因此,对象变量(即非原始变量)在Java中称为引用变量

在这种特定情况下,我们会说变量var的类型为A,但引用类型为B的对象。即使var引用了B对象,它也只能访问父A中定义的方法,因为它的类型为A

答案 2 :(得分:0)

varA类型的引用。它指向B类型的对象。但是,它只知道A中公开的方法。因此,如果课程B定义了A中没有的方法,则您无法通过var引用来调用它们。

答案 3 :(得分:0)

是的,它会成功投放到A,但您无法访问B中的任何A特定属性。见Polymorphism

答案 4 :(得分:0)

一个var = new B(); 这是Java中上传的典型示例。 RHS表示类型B的对象通过其默认的no-args构造函数在内存中实例化。但是你需要一个引用变量来指向内存。所以在LHS“A var”中,var是A类的引用变量。因为在Java中,允许运行时多态或动态方法调度,其中在运行时而不是编译时解析对重写方法的调用,并且通过超类的引用变量调用重写方法。

所以简而言之。 B的对象被实例化并且为了实现运行时多态性,它是类型A的引用变量。

希望这种理解有助于发现你的答案。