Java Reference
In-Depth Information
Self-Test Exercises
(continued)
7. Suppose you have a class
Circle
that represents circles all of whose centers are at
the same point. (To make it concrete you can take the circles to be in the usual
x
,
y
plain and to all have their centers at the origin.) Suppose there is a
boolean
valued
method
inside
of the class
Circle
such that, for circles
c1
and
c2
,
c1.inside(c2)
returns
true
if
c1
is completely inside of
c2
(and
c2
is not the same as
c1
). Is the
following a total ordering?
c1
comes before
c2
if
c1
is inside of
c2
(that is, if
c1.inside(c2)
returns
true
).
You could represent objects of the class
Circle
by a single value of type
double
that gives the radius of the circle, but the answer does not depend on such details.
Defined Constants in Interfaces
The designers of Java often used the interface mechanism to take care of a number of mis-
cellaneous details that do not really fit the spirit of what an interface is supposed to be. One
example of this is the use of an interface as a way to name a group of defined constants.
An interface can contain defined constants as well as method headings or instead of
method headings. When a method implements the interface, it automatically gets the
defined constants. For example, the following interface defines constants for months:
public interface
MonthNumbers
{
public static final
int
JANUARY = 1,
FEBRUARY = 2, MARCH = 3, APRIL = 4, MAY = 5,
JUNE = 6, JULY = 7, AUGUST = 8, SEPTEMBER = 9,
OCTOBER = 10, NOVERMBER = 11, DECEMBER = 12;
}
Any class that implements the
MonthNumbers
interface will automatically have the 12
constants defined in the
MonthNumbers
interface. For example, consider the following
toy class:
public class
DemoMonthNumbers
implements
MonthNumbers
{
public static void
main(String[] args)
{
System.out.println(
"The number for January is " + JANUARY);
}
}