К сожалению, вы не можете сказать это по байт-коду. Аннотация @Override является только рекомендательной - она не обязательна.
JVM определяет 5 способов вызова метода. Они являются invokevirtual, invokeinterface, invokespecial, invokestatic и новой invokedynamic.
Сосредоточьтесь на invokevirtual - это наиболее распространенная форма отправки и используется для случая, о котором вы говорите здесь.
Способ работы invokevirtual заключается в том, что во время выполнения он смотрит на класс объекта, на который вы отправляете. Если он находит реализацию метода, который нам нужен, он вызывает его. Если нет, то он смотрит на суперкласс класса объекта и пытается снова, и т. Д.
Таким образом, из байт-кода невозможно надежно определить, переопределен ли данный метод, не глядя на байт-код родительского класса.