超类子类实例化

时间:2015-12-06 07:07:00

标签: java inheritance polymorphism

请考虑以下代码段:

SuperClass superClass = new SubClass(); // Instantiating SuperClass reference
SubClass subClass = new SubClass(); // Instantiating SubClass reference

如果我列出superClass对象的字段/方法,我只能看到SuperClass中的方法。然后是什么区别:

SuperClass superClass = new SubClass();

SuperClass superClass = new SuperClass();

我知道这可能是多态的情况,我可以使用SubClass引用,SubClass IS-A SuperClass,但为什么我会使用SubClass引用是否要实例化SuperClass,因为我通过SuperClass实例化获取相同的字段/方法?

我已经看过这个问题,但我仍然感到困惑。 Using superclass to initialise a subclass object java

编辑:我不是在谈论接口。我知道接口,我们可以使用它们来分配实现它们的类的对象。我只谈论超类。

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

创建SubClass

的实例时
SuperClass superClass = new SubClass();

您可以将superClass投射到SubClass并访问SubClass的方法。创建SuperClass的实例时,您无法执行此操作。

此外,当SuperClass覆盖这些方法时,在SubClass实例上调用SubClass方法会执行SubClass方法。