Using static fields to provide class-level values
Sometimes, all the members of a class share the same attribute, and we don't need to have a specific value for each instance. For example, virtual creature types have the following profile values:
Attack power
Defense power
Special attack power
Special defense power
Average speed
Catch rate
Growth rate
A first approach we might think useful for this situation is to define the following class constants to store the values that are shared by all the instances:
ATTACK_POWERDEFENSE_POWERSPECIAL_ATTACK_POWERSPECIAL_DEFENSE_POWERAVERAGE_SPEEDCATCH_RATEGROWTH_RATE
Note
Note the usage of uppercase and words separated by underscores (_) for class constant names. This is a naming convention in Java 9.
The following lines show a new version of the VirtualCreature class that defines the seven previously listed class constants with the public access modifier. Notice that the combination of the final and static keywords makes them class constants. The...