Default methods were introduced in interfaces to provide new functionality while maintaining backwards compatibility for existing implementations. Default methods allow interfaces to define implementations for methods while classes implementing those interfaces can also define their own implementations or use the default. Resolution rules for determining which implementation to use are that classes always win over interfaces, sub-interfaces win over parent interfaces, and ambiguous cases result in errors.