7 inner classes

12
Java Inner Classes

Upload: sajid-ali-laghari

Post on 20-Feb-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 7 Inner Classes

Java

Inner Classes

Page 2: 7 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.

Page 3: 7 Inner Classes

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

Page 4: 7 Inner Classes

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 ( ); }}

Page 5: 7 Inner Classes

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

Page 6: 7 Inner Classes

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

Page 7: 7 Inner Classes

Example anonymous inner class

b.addActionListener (new ActionListener ( ) { public void actionPerformed (ActionEvent e) { System.out.println (“Ouch!”);} } ) ;

Page 8: 7 Inner Classes

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

Page 9: 7 Inner Classes

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.

Page 10: 7 Inner Classes

Interfaces, again

interface KeyListener { public void keyPressed(KeyEvent e); public void keyReleased(KeyEvent e); public void keyTyped(KeyEvent e);}

Page 11: 7 Inner Classes

Adapters

class KeyAdapter implements KeyListener { public void keyPressed(KeyEvent e) { }; public void keyReleased(KeyEvent e) { }; public void keyTyped(KeyEvent e) { };}

Page 12: 7 Inner Classes

The End