Java Reference
In-Depth Information
public
Die ()
{}
//automatically created if not present
...
}
The constructors inside a class are easily identifiable because they have the same
name as the name of the class and they have no return type (not even
void
). They
can be called only through the
new
keyword (i.e., they cannot be called directly as
other methods). A constructor can be defined as
private
, but it is usually
public
.
The job of the constructor is to assign initial values to the instance variables of the
object that is being created.
In our case, the default constructor does not initialize the variable
dieValue
and there-
fore our initial design of the
Die
class can be improved. The next version of the class that
includes a proper constructor follows.
class
Die
{
private int
dieValue ;
public
Die ()
{
dieValue = getRandomDieValue() ;
}
public int
getValue ()
{
if
(dieValue
>
=1 && dieValue
<
=6)
{
return
dieValue ;
}
else
{
return
0;
}
}
public void
rollDie()
{
dieValue = getRandomDieValue() ;
}
private static int
getRandomDieValue ()
{
return
(
int
)
(Math . random ( )
∗
6+1);
}
}
An example use of the class is shown next.
Die d =
new
Die () ;
System. out . println (d. getValue () ) ;
for
(
int
i=0;i
<
1000;
i++)
{
d. rollDie() ;
System. out . println(d. getValue() ) ;
}
The code creates a new
Die
object and prints its value. Then it rolls the die one thousand
times and prints the value of the die after every roll. Note that this design shows good
separation of responsibility. The
getValue
method is only responsible for returning the
value of the die, while the
println
method does the printing. Combining the two activities
in a single method is an inferior choice because this will reduce the reusability of the method
and make it more prone to errors.