Java 8 allows us to add non-abstract method implementations to interfaces by utilizing the default keyword. For example:
interface Foo {
    Object method1();
    default Object method2() {
        return new Object();
    }
}
What is the reason for this? Isn't it just making an interface look more like an abstract class? Or there is something else I am missing?
