Проблема со следующей строкой:
Test test = new TestImpl();
Это говорит компилятору забыть, что новый объект является TestImpl, и обрабатывать его как обычный старый Test. Как известно, у Test нет другого метода ().
То, что вы сделали, называется «апкастинг» (приведение объекта к более общему типу). Как сказал другой автор, вы можете решить проблему, не обновляя:
TestImpl test = new TestImpl();
Если вы уверены , что объект Test действительно является TestImpl, вы можете уменьшить его (скажите компилятору, что это более конкретный тип):
Test test = new TestImpl();
:
((TestImpl) test).anotherMethod();
Однако, как правило, это плохая идея, поскольку она может вызвать ClassCastException. Работайте с компилятором, а не против него.