> Once you've made the design using interfaces instead of abstract classes it will work the same way: previously you could make the child class override the method in the abstract class or use the base method and now you can make the child class implement the defender method or use the default implementation; I see no difference.
You still can't define protected, package or private scoped defender
methods. This limits how you model things and means that for many
cases you will still have to use abstract classes.