<< Chapter < Page | Chapter >> Page > |
When this method is called, it does the following:
Containment hierarchy is displayed
Because cShow calls bShow , which in turn calls aShow , we should expect that the call to the cShow method on an object of the member class named C would display information about the containment hierarchy.
(Simply as another reminder, the containment hierarchy is completely independent of the inheritance hierarchy.)
Calling cShow
Referring once more to Listing 1 , we see that the method named cShow is called on the object of the class named C when that object is instantiated. We will see the result of that call shortly.
The cShow method
Listing 14 shows the beginning of the cShow method.
The code in Listing 14
The screen output
The code in Listing 14 produces the output shown in Figure 7 .
As you can see by comparing this with Listing 1 , this is the first object instantiated from the class named C, and is the object instantiated from thestatement in the main method in Listing 1 . (The constructor parameter value is 3.)
Call the bShow method
Continuing with the code in the cShow method, the code in Listing 15 calls the private method named bShow on the containing object of the class B to which this object is linked.
As you will recall from the previous discussion, the code in the bShow method will, in turn, call the aShow method on the containing object of the class named A to which the object of the class B is linked.
The screen output
The code in Listing 15 produces the output shown in Figure 8 .
As you can see in Figure 8 , the linked objects of the classes B and A are the first objects instantiated from those classes. In addition, the savedvalues of the constructor parameters show that these are the objects that were instantiated by the statement in the main method of Listing 1 .
Call the aShow method
As I explained earlier, the object of the class C is linked to the containing object of the class named B. The code in Listing 16 shows that the object of the class C is also linked to the containing object of the class A (even though the containing class named A is one level removed in the containment hierarchy).
Implicit access
The methods of a member class have implicit access to all members (including private members) of all containing classes. Thus, the code in the cShow method, belonging to the object of the class named C, can directly call the private aShow method of the containing class named A.
The screen output
Therefore, the code in Listing 16 produces the output shown in Figure 9 .
You can tell by the values displayed in Figure 9 that the aShow method called in Listing 16 was called on the same object on which the aShow method was called by the code in Listing 15 . However, in Listing 15 , the bShow method was called first, which in turn called the aShow method.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?