Controlling overridability of members in subclasses
We will code the VirtualDomesticCat
abstract class and its concrete subclass: MaineCoon
. Then, we will code the VirtualBird
abstract class, its VirtualDomesticBird
abstract subclass, and the Cockatiel
concrete subclass. Finally, we will code the VirtualDomesticRabbit
concrete class. While coding these classes, we will use Java 9 features that allow us to decide whether the subclasses can or cannot override specific members.
All the virtual domestic cats must be able to talk, and therefore, we will override the talk
method inherited from VirtualDomesticMammal
to print the word that represents a cat meowing: "Meow"
. We also want to provide a method to print "Meow"
a specific number of times. Hence, at this point, we realize that we can take advantage of the printSoundInWords
method we declared in the VirtualHorse
class.
We cannot access this instance method in the VirtualDomesticCat
abstract class because it doesn't inherit from VirtualHorse...