<< Chapter < Page Chapter >> Page >
(Note the use of the super keyword to access the variable named className and the method named toString contributed to the object by the superclass named X.)

The code in Listing 24 also signals the end of the cShow method.

The screen output

The output produced by the code in Listing 24 is shown in Figure 16 .

Figure 16 shows that even though the class named C is contained in the class named B, the superclass of C isX, and is not B. To repeat, the containment hierarchy is entirely independent of the inheritance hierarchy.

(Note, however, that there is nothing to prevent you from establishing an inheritance relationship between a member class and one of its containingclasses if such a relationship will serve your needs. For example, in this program, it would be technically acceptable for the class named B to extendthe class named A provided that either:
  • A noarg constructor is provided for the class named A, or
  • The constructor for the class named B calls the parameterized constructor belonging to the class named A.)

And that is probably more than you ever wanted to know about the detailed relationships involving member classes. However, once you start using memberclasses, you will need to keep these relationships in mind.

Run the program

I encourage you to copy the code from Listing 25 . Compile the code and execute it. Experiment with the code,making changes, and observing the results of your changes. Make certain that you can explain why your changes behave as they do.

Summary

In addition to a number of other items, a class definition can contain:

  • Member classes
  • Local classes
  • Anonymous classes
  • Nested top-level classes and interfaces

This module explains member classes. Future modules will explain local classes and anonymous classes

A member class is a class that is defined inside the definition of another class without being declared static.

An object of the member class must be internally linked to an object of the enclosing class. A member class is trulyan inner class because an object of the member class cannot exist in the absence of an object of the enclosing class.

The methods of a member class have direct access to all the members of the enclosing classes, including private members.Thus the use of member classes can eliminate the requirement to connect objects together via constructor parameters. This is particularly useful in those caseswhere there is no reason for an object of a member class to exist in the absence of an object of the enclosing class, and where the methods of the object of themember class need access to members of the object of the enclosing class.

The containment hierarchy of member classes is independent of the inheritancehierarchy. However, it is technically possible to establish an inheritance relationship between a member class and one of its enclosing classes.

Member classes may be declared private, and may be instantiated from code that wouldnormally have access to a private member at that level.

What's next?

The next module in this series will explain and discuss local classes. A future module will explain anonymous classes.

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