Мне не понятно, в чем проблема. Вы абсолютно можете создать подкласс b, у которого есть метод с тем же именем, но с другой подписью.
Одна из возможных проблем, с которой вы можете столкнуться, заключается в том, что компилятору необходимо знать, что тип объекта - b, а не a, чтобы вызвать метод, существующий только в b.
Таким образом, такой код не будет работать:
// this works because b is a subclass of a
a anObject = new b();
// this will not compile because the declared type of anObject is a
int x = anObject.getValue( 1, 2 );
Вам придется либо изменить объявление переменной на тип b, либо привести его к b, когда вы захотите вызвать метод с двумя аргументами.