Using static methods to provide overridable class-level values
Class constants have a great limitation: we cannot provide new values to them in future subclasses of the VirtualCreature class that represent specific types of virtual creatures. It makes sense, because they are constants. These subclasses need to set a different value for ATTACK_POWER or AVERAGE_SPEED. Instead of working with class constants, we can create the following class methods that return the average values for each profile value. We will be able to make these methods return a different value in subclasses of the VirtualCreature class.
getAttackPowergetDefensePowergetSpecialAttackPowergetSpecialDefensePowergetAverageSpeedgetCatchRategetGrowthRate
The following lines show a new version of the VirtualCreature class that defines the seven previously listed class methods with the public access modifier. Notice that the usage of the static keyword in the method declarations makes them class methods. The code file...