An interface can contain:
public constants;
abstract methods without an implementation (the keyword abstract is not required here);
default methods with implementation (the keyword default is required);
static methods with implementation (the keyword static is required);
private methods with implementation.
Java 9 onwards, you can include private methods in interfaces. Before Java 9
it was not possible.
An interface can't contain fields (only constants), constructors,
or non-public abstract methods.
The keyword abstract before a method means that the method does not have a
body, it just declares a signature.