Вызовите метод не суперкласса на классе - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть класс B, который расширяет A. Я объявляю объект A и инициализирую его как B. Я хочу вызвать метод, которого нет в суперклассе.

Есть ли простой способ сделать это?или мне нужно каждый раз кастовать?

Класс A // не имеет к нему доступа.

Class B extends A {
    methodNotInClassA();
}

Я знаю, что это работает:

Class C {

    A obj;
    method{
        obj = new B();
        ((B)obj).methodNotInClassA();
    }

}

Но существует ли что-то более простое и приятное?

1 Ответ

0 голосов
/ 03 апреля 2019

К сожалению, вы обязаны разыгрывать каждый раз, или вам нужно создать переменную, которая на самом деле имеет тип B.Вы можете проверить, является ли переменная типа A типом B, а затем создать временную переменную примерно так:

if(obj instanceof B) {
    B tmp = (B) obj;

    // Code using tmp instead of obj
}

Но это примерно самая красивая вещь, которую вы собираетесь получить.

...