Only say, “default method,” when referring to interfaces. You have concrete methods in the Animal class (which class should probably be declared
abstract) and you are overriding them in the subclasses. Whenever you are overriding methods, tag them with
@Override. Look at the three Java® Language Specification (=JLS) links in that page, and
this Java™ Tutorials page for more information..
You can access
showLove() like this:-
Not only is that code awkward to read, but also I think any use of
instanceof is a sign of bad design in your inheritance.