Simuduck v1 uses inheritance In the subclasses unwanted behaviours are overwritten . So every time an unwanted behaviour comes around we need to overwrite it in the subclass. It is not efficient. Simuduck v2 uses interfaces to separate wanted behaviours from unwanted behaviours. For instance rubber duck which should not fly do not implement Flyable interface. However when a fly behaviour needs to be changed, It must change in all species of duck which flies. It is not efficient either.
Programming to an interface rather than an implementation on Animal class has been implemented.
Test cases expanded.