调用子方法,其中定义的引用类型属于父类,但实际引用是子对象

时间:2012-03-01 20:50:37

标签: java methods

我有一个父母和一个儿童班,

class Parent
{
    // variables
    // constructor
}

class Child extends Parent
{
    // variables
    // constructor
    public void AChildMethod()
    {
        // do something
    }
}

在我的程序中,我有一个主要类型的引用,但它引用了一个子类型

Parent obj = new Child();

是否可以通过这种方式调用孩子的“AChildMethod”方法?

obj.AChildMethod();

非常感谢你。

2 个答案:

答案 0 :(得分:2)

您可以检查它是否真的是Child类的实例,然后简单地转换为子类型:

if ( obj instanceof Child ) {
    ((Child) obj).aChildMethod();
    // or
    Child childObj = (Child) obj;
    childObj.aChildMethod();
}

但是,如果需要这样的强制转换,则可能表明您的类层次结构应该得到改进。

答案 1 :(得分:1)

如果您知道 obj实际上是Child,那么您可以将其转换为Child,然后致电childMethod。这是唯一的方法。