我有一个父母和一个儿童班,
class Parent
{
// variables
// constructor
}
class Child extends Parent
{
// variables
// constructor
public void AChildMethod()
{
// do something
}
}
在我的程序中,我有一个主要类型的引用,但它引用了一个子类型
Parent obj = new Child();
是否可以通过这种方式调用孩子的“AChildMethod”方法?
obj.AChildMethod();
非常感谢你。
答案 0 :(得分:2)
您可以检查它是否真的是Child类的实例,然后简单地转换为子类型:
if ( obj instanceof Child ) {
((Child) obj).aChildMethod();
// or
Child childObj = (Child) obj;
childObj.aChildMethod();
}
但是,如果需要这样的强制转换,则可能表明您的类层次结构应该得到改进。
答案 1 :(得分:1)
如果您知道 obj
实际上是Child
,那么您可以将其转换为Child
,然后致电childMethod
。这是唯一的方法。