Вызов дочерних методов, где определенный ссылочный тип принадлежит родительскому, но фактическая ссылка является дочерним объектом - PullRequest
0 голосов
/ 02 марта 2012

У меня есть родитель и дочерний класс,

class Parent
{
    // variables
    // constructor
}

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

И внутри моей программы у меня есть ссылка на основной тип, но она ссылается на дочерний тип

Parent obj = new Child();

Можно ли вызвать метод «AChildMethod» для ребенка таким образом?

obj.AChildMethod();

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Вы можете проверить, действительно ли это экземпляр класса Child, а затем просто привести к дочернему типу:

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

Однако, если приведение, подобное этому, необходимо, это может быть указаниемчто ваша иерархия классов должна быть улучшена.

1 голос
/ 02 марта 2012

Если вы знаете , что obj на самом деле Child, то вы можете привести его к Child и затем вызвать childMethod. Это единственный способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...