1
JavaAdvanced#streams#exceptions
A default method provides a concrete implementation that implementing classes inherit and can override; it's called on instances. A static method belongs to the interface itself, cannot be overridden by implementing classes, and is called via the interface name.
interface Vehicle {
default void honk() { System.out.println("Beep"); } // inherited, overridable
static Vehicle createDefault() { return new Car(); } // called as Vehicle.createDefault()
}