Java Inner Classes. Interfaces interface KeyListener { public void keyPressed(KeyEvent e); public...
-
Upload
lucy-weaver -
Category
Documents
-
view
216 -
download
3
Transcript of Java Inner Classes. Interfaces interface KeyListener { public void keyPressed(KeyEvent e); public...
Java
Inner Classes
Interfaces
interface KeyListener {
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
public void keyTyped(KeyEvent e);
}
• An interface describes methods but does not supply bodies for them.
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 setNToTen ( ) { n = 10; } } void setN ( ) { new Inner ( ).setNToTen ( ); }}
Member classes II
• Member classes are useful for handling events
• Button b = new Button (“Click Me”);b.addActionListener (new Clicker ( ));…class Clicker implements ActionListener { … }
• Can access the variables of the outer class
Anonymous inner classes
• Convenient for short code
• b.addActionListener (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.addActionListener (new ActionListener ( ) {
public void actionPerformed (ActionEvent 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 KeyListener {
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
public void keyTyped(KeyEvent e);
}
Adapters
class KeyAdapter implements KeyListener {
public void keyPressed(KeyEvent e) { };
public void keyReleased(KeyEvent e) { };
public void keyTyped(KeyEvent e) { };
}
The End