On 8/5/2011 5:31 PM, Chad wrote:
> Let's say I have the following class.....
>
>
> public class ComparableRectangle extends Rectangle implements
> Comparable {
> public ComparableRectangle(double width, double height) {
> super(width, height);
> }
>
> public int compareTo(Object o) {
> if (getArea()> ((ComparableRectangle)o).getArea())
> return 1;
> else if (getArea()< ((ComparableRectangle)o).getArea())
> return -1;
> else
> return 0;
> }
> }
>
> Are 'width' and 'height' data fields in this class? My initial guess
> is yes. However, the fact that they are passed to super() makes me
> wonder otherwise.
Looking only at the snippet shown, it's impossible to answer
the question. The ComparableRectangle class itself has no members
named width or height. It might (or might not) inherit such
members from Rectangle or from a superclass of Rectangle. All we
can be sure of is (1) Rectangle has a constructor taking two
double arguments, and (2) Rectangle or a Rectangle ancestor has
a getArea() method returning a primitive number of some kind.
We don't actually know what Rectangle is because there are no
import statements to tell us what package it's in. It clearly
cannot be java.awt.Rectangle, which has public width and height
members but which has no getArea() and no suitable constructor.
--
Eric Sosman
d