<< Chapter < Page | Chapter >> Page > |
Default version of toString
If not overridden, the default version of the toString method defined in the Object class is used to produce a textual representation of the object. As we learned in an earlier module, that textualrepresentation looks something like the following:
ClassName@HexHashCode
Overridden version of toString method
If the class from which the object was instantiated (or some superclass of that class) contains an overridden version of the toString method, runtime polymorphism kicks in and the overridden version of the methodis executed to produce the textual representation of the object.
The Date class overrides toString
In the case of this sample program, the object was instantiated from the Date class. The Date class does override the toString method.
When the overridden toString method is called on a Date object's reference, the String returned by the method looks something like that shown in Figure 6 .
Figure 6 . Output from overridden toString method in Date class. |
---|
Mon Sep 17 09:52:27 CDT 2001 |
You will recall that this is the output that was produced by the code shown in Listing 8 and Listing 12 .
More than you ever wanted to know ...
And that is probably more than you ever wanted to know about the expression System.out.println... .
It is also probably more than you ever wanted to know about class variables, class methods, instance variables, and instance methods.
Some cautions
Before leaving this topic, I do want to express some cautions. Basically, I want to suggest that you use static members very sparingly, if at all.
Static variables
To begin with, don't ever use static variables without declaring them final unless you understand exactly why you are declaring them static .
( static final variables, or constants, are often very appropriate. See the fields in the Color class for example.)
I can think of only a very a few situations in which the use of a non-final static variable might be appropriate.
(One appropriate use might be to count the number of objects instantiated from a specific class.)
Static methods
Don't declare methods static if there is any requirement for the method to remember anything from one call to the next.
There are many appropriate uses for static methods, but in most cases, the purpose of the method will be to completely perform some actionwith no requirement to remember anything from that call to the next.
The method should probably also be self-contained. By this I mean that all information that the method needs to do its job should either come from incomingparameters or from final static member variables (constants). The method probably should not depend on the values stored in non-final static member variables, which are subject to change over time.
(A static method only has access to other static members of the class, so it cannot depend on instance variables defined in the class.)
An appropriate example of a static method is the sqrt method of the Math class. This method computes and "Returns the correctly rounded positive square root of a double" where the double value is provided as a parameter to the method. Each time the method is called, itcompletes its task and doesn't attempt to save any values from that call to the next. Furthermore, it gets all the information that it needs to do its job froman incoming parameter.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?