<< Chapter < Page | Chapter >> Page > |
Inherited default behavior of the toString method
As I mentioned earlier, the toString method is defined with default behavior in the Object class. Since every class is a subclass of the Object class, every class inherits that method.
If the toString method is not overridden in a class or in any of the superclasses of a given class and the toString method is called on an object of the given class, the default behavior of the toString method will occur.
Can override to change the behavior
However, any class can override the toString method to produce different behavior and can pass that behavior down the inheritance hierarchy tosubclasses of the class that overrides the method.
The toString method is overridden
In this program, the toString method is overridden in exactly the same way in both the Prob05MyClassB class and the Prob05MyClassB class. (See Listing 6 and Listing 9 .) Therefore, when the toString method is called on an object of either class, it will return a string representation of the value stored in thevariable named data plus 5.
Pass object references to the print and println methods
The first statement in Listing 12 passes the reference to the object stored in the first element of the array to the print method and the third statement passes the reference to the object stored in the second element of thearray to the println method.
Execute overridden toString methods and print the returned values
The print and println methods cause the code in Listing 6 and Listing 9 to be executed. In both cases, this code returns a string that represents the originalrandom value plus 5. This is the value that is displayed.
Print the random value plus 5
The second statement in Listing 12 adds five to the original random number and prints the result. These three statements produce thethird line of text in Figure 1 where all three values are the algebraic sum of the original random number plus 5.
Important - The cast is not required
Even though the references extracted from the array in the first and third statements in Listing 12 are cast to the interface type Prob05X , that cast is unnecessary.
Because the original definition of the toString method appears in the class named Object , the toString method can be called on those objects even while they are being treated as though they are of type Object .
Runtime polymorphism
Furthermore, a very powerful capability of OOP known as runtime polymorphism would cause the overridden versions of the methods defined in Listing 6 and Listing 9 to be executed instead of the default version of the method defined in the Object class.
The end of the main method
Listing 12 signals the end of the main method and the end of the class named Prob05 . When the main method has nothing further to do, it terminates causing the program to terminate and return control to the operating system.
I encourage you to copy the code from Listing 13 . Compile the code and execute it. Experiment with the code, making changes, andobserving the results of your changes. Make certain that you can explain why your changes behave as they do.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?