Defining Methods
Here is an example of a typical method declaration:
public double calculateAnswer(double wingSpan, int
numberOfEngines,
double length, double grossTons) {
//do the
calculation here
}
The only required elements of a method declaration are the
method's return type, name, a pair of parentheses, (), and a body between
braces, {}.
More generally, method declarations have six components, in
order:
- Modifiers—such as public, private.
- The return type—the data type of the value returned by the method, or void if the method does not return a value.
- The method name—the rules for field names apply to method names as well, but the convention is a little different.
- The parameter list in parenthesis—a comma-delimited list of input parameters, preceded by their data types, enclosed by parentheses, (). If there are no parameters, you must use empty parentheses.
- An exception list—to be discussed later.
- The method body, enclosed between braces—the method's code, including the declaration of local variables, goes here.
Modifiers, return types, and parameters will be discussed
later in this lesson. Exceptions are discussed in a later lesson.
Definition: Two of the components of a method declaration
comprise the method signature—the method's name and the parameter types.
The signature of the method declared above is:
calculateAnswer(double, int, double, double)
Naming a Method
Although a method name can be any legal identifier, code
conventions restrict method names. By convention, method names should be a verb
in lowercase or a multi-word name that begins with a verb in lowercase,
followed by adjectives, nouns, etc. In multi-word names, the first letter of
each of the second and following words should be capitalized. Here are some
examples:
run
runFast
getBackground
getFinalData
compareTo
setX
isEmpty
Typically, a method has a unique name within its class.
However, a method might have the same name as other methods due to method
overloading which is not encouraged.
Providing Constructors for Your Classes
A class contains constructors that are invoked to create
objects from the class blueprint. Constructor declarations look like method
declarations—except that they use the name of the class and have no return
type. For example, Bicycle has one constructor:
public Bicycle(int startCadence, int startSpeed, int
startGear) {
gear = startGear;
cadence =
startCadence;
speed =
startSpeed;
}
To create a new Bicycle object called myBike, a constructor
is called by the new operator:
Bicycle myBike = new Bicycle(30, 0, 8);
new Bicycle(30, 0, 8) creates space in memory for the object
and initializes its fields.
Although Bicycle only has one constructor, it could have
others, including a no-argument constructor:
public Bicycle() {
gear = 1;
cadence = 10;
speed = 0;
}
Bicycle yourBike = new Bicycle(); invokes the no-argument
constructor to create a new Bicycle object called yourBike.
Both constructors could have been declared in Bicycle
because they have different argument lists. As with methods, the Java platform
differentiates constructors on the basis of the number of arguments in the list
and their types. You cannot write two constructors that have the same number
and type of arguments for the same class, because the platform would not be
able to tell them apart. Doing so causes a compile-time error.
You don't have to provide any constructors for your class,
but you must be careful when doing this. The compiler automatically provides a
no-argument, default constructor for any class without constructors. This
default constructor will call the no-argument constructor of the superclass. In
this situation, the compiler will complain if the superclass doesn't have a
no-argument constructor so you must verify that it does. If your class has no
explicit superclass, then it has an implicit superclass of Object, which does
have a no-argument constructor.
You can use a superclass constructor yourself. The
MountainBike class at the beginning of this lesson did just that. This will be
discussed later, in the lesson on interfaces and inheritance.
You can use access modifiers in a constructor's declaration
to control which other classes can call the constructor.
Note: If another class cannot call a MyClass constructor, it
cannot directly create MyClass objects.
No comments:
Post a Comment