<< 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.
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.
In addition to a number of other items, a class definition can contain:
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.
The next module in this series will explain and discuss local classes. A future module will explain anonymous classes.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?