<< Chapter < Page | Chapter >> Page > |
C. 1.0 2.0
This is an upgrade of the program from Question 14 . This program applies the proper downcast operator to the references extracted from the array of type Object before attempting to call the method named getData on those references. (For more information, see the discussion of Question 14 .)
As a result of applying a proper downcast, the program compiles and runs successfully.
A. Compiler Error
Storing references in a generic array of type Object
This program stores references to two objects instantiated from a new class named MyClass in the elements of an array object of declared type Object . That is OK.
Calling a method on the references
Then the program extracts the references to the two objects and attempts to call the method named getData on each of the references. That is not OK.
Downcast is required
Because the method named getData is not defined in the class named Object , in order to call this method on references extracted from an array of type Object , it is necessary to downcast the references to the class in which the method isdefined. In this case, the method is defined in the new class named MyClass (but it could be defined in an intermediate class in the class hierarchy if the newclass extended some class further down the hierarchy) .
Here is a partial listing of the compiler error produced by this program:
Ap062.java:15: error: cannot find symbol
A[0].getData() + " " +
^symbol: method getData()
location: class Object
D. None of the above.
The array object of type Object in this program is capable of storing a reference to a new object instantiated from the new class named MyClass . However, because the new class does not override the toString method, when a string representation of the new object is displayed, the stringrepresentation is created using the version of the toString method that is inherited from the Object class. That causes this program to produce an output similar to the following:
Zero 1 MyClass@273d3c
C. Zero 1 2.0
A type-generic array object
As explained in Question 11 , an array object of the type Object is a generic array that can be used to store references to objects instantiated from anyclass.
Storing mixed reference types
This program instantiates objects from the classes String , Integer , and Double , and stores those objects' references inthe elements of an array of type Object . Then the program accesses the references and uses them to display string representations of each of theobjects.
Polymorphic behavior applies
Once again, polymorphic behavior involving overridden versions of the toString method were involved and it was not necessary to downcast the references to their true type to display string representations of the objects.
C. Zero One Two
Storing references to subclass types
When you create an array object for a type defined by a class definition, the elements of the array can be used to store references to objects of that classor any subclass of that class.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?