假设我有一个名为ParentClass
和一个名为ChildClass
The ParentClass
是抽象的,并且ChildClass
延长了ParentClass
根据 Java 术语。此外,ParentClass
有一个构造函数,它需要一个int
作为参数。现在在另一个类中我想实例化ChildClass
。我尝试过以下两种方法:
ChildClass obj1 = new ChildClass(5)
ParentClass obj2 = new ChildClass(5)
Java 允许我使用上述两种方式中的任何一种。我的问题是,实际上有什么区别吗?如果我愿意的话,我可以交替使用两者吗?
两者都有效,并且都在内存中创建相同的对象。但只有第一个允许您使用 ChildClass 的其他特定属性或 ParentClass 不知道的方法。
例子 :
abstract class ParentClass{
...
}
class ChildClass extends ParentClass {
public void someChildMethod(){ ... }
...
}
...
ChildClass obj1 = new ChildClass(5);
ParentClass obj2 = new ChildClass(5);
obj1.someChildMethod(); // ok
obj2.someChildMethod(); // compilation error
((ChildClass)obj2).someChildMethod(); // ok
因此,仅当您确定永远不需要特定的子方法或属性(如果有)时,才使用第二个实例化方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)