// Author: David Galles
// class Containig: Illustrating contained classes
class Containing
{
private int x;
ContainedClass interiorClass1;
ContainedClass interiorClass2;
// Constructor
// Sets the value of the single instance variable, and creates two instances of
// an internal class,
public Containing(int initialX, int initialY1, int initialY2)
{
interiorClass1 = new ContainedClass(initialY1);
interiorClass2 = new ContainedClass(initialY2);
x = initialX;
}
// Method printSum: Prints out the result of the add method of the two local
// instance variables.
// Illustrating containing class calling method on contained instace
// variables.
public void printSum()
{
System.out.print("Sum1: ");
System.out.println(interiorClass1.add());
System.out.print("Sum2: ");
System.out.println(interiorClass2.add());
}
class ContainedClass
{
protected int y;
// Constructor
// Sets the value for the single instance variable in the contained class
public ContainedClass(int initialY)
{
y = initialY;
}
// Method add: Returns the sum of the instance variable y local to the
// contained class, and the variable x in the containing class.
// Illustrating contained class accessing containing variables
public int add()
{
return x + y;
}
}
public static void main(String args[])
{
Containing C1 = new Containing(1,2,3);
Containing C2 = new Containing(5,6,7);
C1.printSum();
C2.printSum();
}
}