Если вы создаете экземпляр переопределяющего класса, то его переопределенные методы будут выполняться.
Bicycle bike;
bike = new Bicycle(1,2,3);
bike.setGear(8);//Bicycle's setGear is run
bike = new MountainBike(1,2,3,4);
bike.setGear(8);//MountainBike's setGear is run
- Редактировать : отразить отредактированный вопрос OP (setGear
теперьвызывается из конструктора Bicycle
) -
Bicycle b=new MountainBike(1,2,3,4);
Учитывая, что вы создаете экземпляр MountainBike
, MountainBike
'setGear
выполняется.