/**
* This code is from the book:
* Winder, R and Roberts, G (1998)
* Developing Java Software
* John Wiley &XF Sons.
* It is copyright (c) 1997 Russel Winder
* and Graham Roberts.
*/
import ITest.*;// Needs ITest package
class A implements Example
{
// Can have a nested interface
private interface Local{}
// Implementation of interface variable
public void f(int x)
{
System.out.println("A:f " + x);
// Use the interface variables
System.out.println(f);
System.out.println(Example.f); // Also allowed
System.out.println(m);
System.out.println(n);
System.out.println(p);
// name is declared in a non public inherited
// interface and cannot be accessed outside
// the same package.
// System.out.println(name); // Error
// System.out.println(X.name); // Error
// interface variables are final so
// can't do this assignment
// m = 5; // Error
// This member class implements a nested interface
// declared in the interface Example.
// Why you would want to do this is another
// matter...
class NestedClass implements Example.Nested
{
public void z()
{
System.out.println("NestedClass:z");
}
}
NestedClass nest = new NestedClass();
nest.z();
}
// Must override g and h as well
public void g()
{
System.out.println("A:g ");
}
public int h(int x)
{
System.out.println("A:h " + x);
return x * 2;
}
}
class InterfaceTest
{
public static void main(String[] args)
{
A a = new A();
a.f(10);
Thing t = new Thing();
t.f(20);
// Can't access a nested private interface
// A.Local l; // Error
}
}