This page is optimized for mobile devices, if you would prefer the desktop version just click here

3.21 Java3020: interfaces, object arrays, etc.  (Page 5/8)

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.

<< Chapter < Page Page > Chapter >>

Read also:

OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.
Jobilize.com uses cookies to ensure that you get the best experience. By continuing to use Jobilize.com web-site, you agree to the Terms of Use and Privacy Policy.