<< Chapter < Page | Chapter >> Page > |
However, the behavior of a method as defined in one class is not required to be the same as the behavior of the method having the same signature in the otherclass.
The behavior is different
For example, the code in Listing 4 subtracts 1 from the value of data and returns that modified value.
The code in Listing 8 adds 1 to the value of data and returns that modified value.
Therefore, the behavior of the method named getModifiedData in an object instantiated from the class named Prob05MyClassB is completely different from the behavior of the method having the same signature in an objectof the class named Prob05MyClassA .
The getData and toString methods
Listing 9 shows the getData and toString methods as defined in the class named Prob05MyClassB .
Listing 9 . The getData and toString methods. |
---|
public int getData(){
return data;}//end getData()
public String toString(){return "" + (data + 5);
}//end toString()}//end class Prob05MyClassB |
The behavior is the same
If you compare Listing 9 with Listing 5 and Listing 6 , you will see that these two methods are defined the same in both classes. Therefore, these two methodshave the same behavior regardless of which of the two objects instantiated in Listing 1 they are called on.
Back to the driver class named Prob05
Returning now to the driver class named Prob05 where we left off in Listing 1 , Listing 10 contains three statements that print information on the command line screen.
Listing 10 . Print three items of information. |
---|
System.out.print(
((Prob05X)var1[0]).getModifiedData() + " ");System.out.print(randomData + " ");System.out.println(
((Prob05X)var1[1]).getModifiedData()); |
Three print statements
The first two statements in Listing 10 call the print method and the last statement calls the println method.
When the println method is called, the onscreen cursor advances to the left side of the next line after the material has been printed.
However, when the print method is called, the cursor remains at the right end of the printed material.
Therefore, calling print print println in succession will cause three items of information to be printed on the same line.
A cast is required
Recall that the reference to each object instantiated in Listing 1 is stored in an array element as type Object .
A reference to any object can be stored in a reference of type Object because the Object class is the superclass of all classes. (References to array objects can also be stored as type Object but that fact is not germane to this program.)
Only eleven methods can be called on type Object
However, once an object's reference is stored as type Object , the only methods that can be called on that object (without casting) are the eleven methods that are defined in the Object class. That group of eleven methods includes the method named toString but it does not include the methods named getData and getModifiedData .
Must change the type of the reference
Therefore, the first statement in Listing 10 requires that a cast to be used to change the type of the reference back to a type on which the methodcan be called. There are a couple of choices in this regard.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?