 <p>Java interfaces cannot be instantiated, the programmer has to specify what implementation of the interface he wants to instantiate.</p> <p>For example, if you try to do this (replace INTERFACE with the name of the interface):</p> <pre><code>INTERFACE i = new INTERFACE(); </code></pre> <p>you will get an error, because an interface cannot be instantiated.</p> <p>What you must do is (replace IMPLEMENTATION with the name of the implementation of the interface):</p> <pre><code>INTERFACE i = new IMPLEMENTATION(); </code></pre> <p>As you can see, you ALWAYS tell the program what implementation to use for an interface. There's no room for ambiguity. </p> <p>In your example, the class TextSource is NOT instantating the interface TextReceiver (instantiation occurs with the <strong>"new"</strong> keyword). Instead, it has a constructor that receives the implementation of the interface as a parameter. Therefore, when you call TextSource you MUST tell it what implementation of TextReceiver to use.</p>