Challenge 1: An Interface With a Default Method — Possible Solution ==================================================================== Printable.java: public interface Printable { void print(); default void printTwice() { print(); print(); } } Document.java: public class Document implements Printable { @Override public void print() { System.out.println("Printing document..."); } public static void main(String[] args) { Document d = new Document(); d.printTwice(); } } Output: Printing document... Printing document... Explanation: Document only implements print() -- the single abstract method Printable actually requires. printTwice() is never written in Document at all; it's inherited automatically from Printable's own default body, which calls print() twice. Because print() is dynamically dispatched, printTwice() ends up calling Document's own print() implementation both times. WHY THIS WORKS AS AN ANSWER ------------------------------ This demonstrates a default method being inherited and used without the implementing class writing any code for it, exactly matching the chapter's own claim that default methods are supplied by the contract itself rather than repeated by every implementer.