<< Chapter < Page Chapter >> Page >

When this method is called, it does the following:

  • Displays the value of the constructor parameter passed to the object when it was constructed.
  • Displays the identification of the object based on the value of the object counter when it was constructed.

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

  • Displays a string separator to help locate the specific output in the large quantity of output produced by the program.
  • Displays the object identifier based on the object counter.
  • Displays the value passed to the constructor when the object was instantiated.

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.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  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.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask