Sunteți pe pagina 1din 12

Java

Inner Classes

Interfaces
An interface describes methods but does not
supply bodies for them.
interface KeyListener {
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
public void keyTyped(KeyEvent 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 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

S-ar putea să vă placă și