Java创建对象的不同方式

时间:2016-03-22 13:45:42

标签: java

任何人都可以告诉我这两个对象创建之间的区别

方法1:

Superclass ob = new Childclass();

方法2:

Childclass ob = new Shildclass();

两个对象之间有什么区别以及原因。

谢谢, Vijesh

3 个答案:

答案 0 :(得分:1)

区别在于:

Superclass a = new ChildClass();

被声明为类型超类实例,这意味着它仅限于超类的成员。

ChildClass c = new ChildClass();

是ChildClass类型,可以访问ChildClass的所有成员以及从Superclass继承的成员。

答案 1 :(得分:0)

来自Difference Between Static Binding And Dynamic Binding In Java

第一个称为动态绑定的是在运行时发生的。它也称为后期绑定,因为当程序实际运行时会发生绑定。

在运行时,实际对象用于绑定。例如,对于下面图片中的“a1.method()”调用,将调用‘a1’指向的实际对象的method()。对于a2.method()调用,将调用method()指向的实际对象的‘a2’。这种类型的绑定称为动态绑定。

以上示例的动态绑定可以如下所示。 enter image description here

答案 2 :(得分:0)

对象创作是相同的。在这两种情况下,您都要创建Childclass

的实例

这两个片段之间的区别在于您在创建对象后使用对象引用

通过将对象引用分配给Superclass类型的变量,您暂时"隐藏"对象Childclass的某些方面。但该对象仍然是Childclass的一个实例,如下所示:

Superclass ob = new Childclass();
System.out.println(ob.getClass());  // prints "Childclass"