超类子类实例化



考虑以下代码片段:

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引用,如SubClassIS-aSuperClass,但如果我想实例化SuperClass,为什么要使用SubClass引用,因为我通过用SuperClass实例化它来获得相同的字段/方法?

我看过这个问题,但还是很困惑。使用超类初始化子类对象java

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

如有任何帮助,我们将不胜感激。

创建SubClass 实例时

SuperClass superClass = new SubClass();

您可以将superClass强制转换为SubClass并访问SubClass的方法。创建SuperClass实例时无法执行此操作。

此外,在SubClass的实例上调用SuperClass的方法将在SubClass重写这些方法时执行SubClass方法。

最新更新