2015-12-06 91 views
1

考虑下面的代码片段:超类的子类实例化

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

如果我列出域/ superClass对象的方法,我可以看到只有超类方法。那么有什么区别:

SuperClass superClass = new SubClass(); 

SuperClass superClass = new SuperClass(); 

我知道这可能是多态的情况下,我可以使用​​参考,为​​IS-ASuperClass,但我为什么会使用​​参考如果我想实例化SuperClass因为我通过使用SuperClass实例化相同的字段/方法?

我见过这个问题,但我仍然困惑。 Using superclass to initialise a subclass object java

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

任何帮助,将不胜感激。

+0

编辑问题@ elliott-frisch。谢谢。 – HelloWorld

+0

您仍然*编程到由超类定义的接口*。 –

回答

2

当您创建的​​

SuperClass superClass = new SubClass(); 

的情况下,你可以投superClass到​​并获得的​​方法。当您创建SuperClass的实例时,您无法执行此操作。

另外,当​​覆盖这些方法时,在​​的实例上调用方法SuperClass将执行​​方法。

+0

感谢您的快速回答。赞赏。 – HelloWorld

+0

你能解释一下,在哪种情况下,我需要casitng'superClass'对象到'SubClass',以便我可以访问'SubClass''方法,因为如果我知道我会提前需要'SubClass'对象,那么我将使用' SubClass'对象而不是'SuperClass'? – HelloWorld