Java Inner Classes Interfaces An interface describes methods
Java Inner Classes
Interfaces • An interface describes methods but does not supply bodies for them. interface Key. Listener { public void key. Pressed(Key. Event e); public void key. Released(Key. Event e); public void key. Typed(Key. Event e); }
Four kinds of inner classes • Member classes – simple • Anonymous classes – syntax is ugly but anonymous classes are useful • Static member classes (not too useful) • Local classes (not too useful) • Every class compiles to a separate. class file
Member classes • A member class is an “ordinary” inner class • class Outer { int n; class Inner { int ten = 10; void set. NTo. Ten ( ) { n = 10; } } void set. N ( ) { new Inner ( ). set. NTo. Ten ( ); } }
Member classes II • Member classes are useful for handling events • Button b = new Button (“Click Me”); b. add. Action. Listener (new Clicker ( )); … class Clicker implements Action. Listener { … } • Can access the variables of the outer class
Anonymous inner classes • Convenient for short code • b. add. Action. Listener (anonymous inner class); • The anonymous inner class can be either: – new Superclass (args) { body } – new Interface (args) { body } • Notice that no class name is given--only the name of the superclass or interface
Example anonymous inner class b. add. Action. Listener (new Action. Listener ( ) { public void action. Performed (Action. Event e) { System. out. println (“Ouch!”); }});
Static member classes • static class Inner { … } • A static member class can access only static variables of the outer class • A static member class isn't "really" an inner class • Inner classes did not exist in Java 1. 0
Local classes • A local class is a class defined inside a method. • A local class cannot access variables declared in the method (!) • There are many other restrictions on local classes.
Interfaces, again interface Key. Listener { public void key. Pressed(Key. Event e); public void key. Released(Key. Event e); public void key. Typed(Key. Event e); }
Adapters class Key. Adapter implements Key. Listener { public void key. Pressed(Key. Event e) { }; public void key. Released(Key. Event e) { }; public void key. Typed(Key. Event e) { }; }
The End
- Slides: 12