Java Reference
In-Depth Information
they must return something equivalent to those values. For example, the method
getMonth
returns the number of the month, even though the month is stored in a
String
instance variable. Although it is not required by the Java language, it is a gen-
erally accepted good programming practice to spell the names of accessor methods
starting with
get
.
Mutator methods
allow you to change the data in a class object. In Display 4.9,
the methods whose names begin with the word
set
are mutator methods. It is a gen-
erally accepted good programming practice to use names that begin with the word
set
for mutator methods. Your class definitions will typically provide a complete set
of public accessor methods and typically at least some public mutator methods.
There are, however, important classes, such as the class
String
, that have no public
mutator methods.
At first glance, it may look as if accessor and mutator methods defeat the purpose of
making instance variables private, but if you look carefully at the mutator methods in
Display 4.9, you will see that the mutator and accessor methods are not equivalent to
making the instance variables public. Notice the mutator methods, that is, the ones
that begin with
set
. They all test for an illegal date and end the program with an error
message if there is an attempt to set the instance variables to any illegal values. If the
variables were public, you could set the data to values that do not make sense for a
date, such as January 42, 1930. With mutator methods, you can control and filter
changes to the data. (As it is, you can still set the data to values that do not represent a
real date, such as February 31, but as we already noted, it would be easy to exclude
these dates as well. We did not exclude these dates to keep the example simple. See
Self-Test Exercise 19 for a more complete date check method.)
mutator
methods
Display 4.9
Yet Another Date Class
(part 1 of 4)
1
import
java.util.Scanner;
2
public
class
DateFifthTry
3{
4
private
String month;
5
private
int
day;
6
private
int
year; //a four digit number.
7
public
void
writeOutput()
8
{
9
System.out.println(month + " " + day + ", " + year);
10
}
Note that this version of
readInput
has the user
enter the month as an integer rather than as a
string. In this class, a month is an integer to the
user, but is a string inside the class.
11
public
void
readInput()
12
{
(continued)