Why can't I extend an instantiable class with a new value component while preserving the compareTo contract?
<p>Per <em>Effective Java</em> by Joshua Blotch:</p>

<blockquote>
  <p>There is no way to extend an instantiable class with a new value
  component while preserving the compareTo contract, unless you are
  willing to forgo the benefits of object-oriented abstraction</p>
</blockquote>

<p>Can you please explain the above with examples and the challenges?  Can you also explain what Joshua means by "Value Component" and what other types of components are available.</p>

<blockquote>
  <p>This frees you to implement whatever compareTo method you like on the
  second class, while allowing its client to view an instance of the
  second class as an instance of the first class when needed.</p>
</blockquote>

<p>Can you also explain what Joshua means by <em>second class as an instance of the first class</em>?  </p>
