이 예제에서는 동일한 패키지 p1 내에서 두 클래스 A와 B를 만듭니다. 클래스 A에서 메서드를 개인으로 선언하고 클래스 B에서 이 메서드에 액세스하여 결과를 확인합니다. 멤버 클래스는 포함된 클래스의 비정적 멤버로 선언되는 클래스입니다. 정적 멤버 클래스가 클래스 필드 또는 클래스 메서드와 유사한 경우 멤버 클래스는 인스턴스 필드 또는 인스턴스 메서드와 유사합니다. 예제 3-9에서는 멤버 클래스를 정의하고 사용하는 방법을 보여 주며 있습니다. 이 예제에서는 java.util.Enumeration 인터페이스의 구현을 반환 하는 열거() 메서드를 정의 하 여 스택에 요소의 열거를 허용 하기 위해 이전 LinkedStack 예제를 확장 합니다. 이 인터페이스의 구현은 멤버 클래스로 정의됩니다. Java 런타임 시스템의 JDK 1.0 버전은 과도 마커를 무시합니다. Java 시스템의 향후 릴리스에서는 과도 마커를 사용하여 다양한 개체 보관 기능을 구현합니다. 멤버 클래스에 대한 둘러싸는 인스턴스를 명시적으로 지정하는 Java 구문에는 다른 특별한 구문이 하나 있습니다. 그러나 고려하기 전에이 구문을 사용해야하는 경우는 거의 없다는 점을 지적하겠습니다. 그것은 내부 클래스의 모든 우아한 기능과 함께 언어에 몰래 병리학 적 사례 중 하나입니다.

이 구문은 Java 1.1 컴파일러에 의해 구현되지 않았지만 Java 1.2에서 올바르게 작동합니다. Java 런타임 시스템의 JDK 1.0 버전은 휘발성 마커를 무시합니다. 그러나 Java 런타임 시스템의 향후 릴리스에서는 이 정보를 사용하여 각 사용 전에 휘발성 변수가 메모리에서 로드되고 각 사용 후 메모리에 저장되어 변수값이 일관되고 일관성있게 유지되도록 합니다. 각 스레드 내에서. 이 예제에서는 두 개의 패키지 p1 및 p2를 만듭니다. p1의 클래스 A는 p2에서 액세스하기 위해 공개됩니다. 클래스 A의 메서드 표시는 보호되고 클래스 B는 클래스 A에서 상속되며 이 보호된 메서드는 클래스 B의 개체를 만들어 액세스합니다. 예를 들어 다음 변수 선언은 pi의 근사치(원의 둘레와 지름의 비율)인 상수 명명된 PI를 정의합니다.