Presentation is loading. Please wait.

Presentation is loading. Please wait.

2-Dec-15 Inner Classes By Alguien Soy. 2 Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside.

Similar presentations


Presentation on theme: "2-Dec-15 Inner Classes By Alguien Soy. 2 Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside."— Presentation transcript:

1 2-Dec-15 Inner Classes By Alguien Soy

2 2 Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside another class The usual access modifiers ( public, protected, private ) can be used Inner classes were not in Java 1.0 They had to be added in later As a result, inner classes are not as well done as some other aspects of the language

3 3 Four kinds of inner classes Member classes Simple and useful Anonymous classes Useful, but syntax is ugly Static member classes (not too useful) Local classes (not too useful) Every class compiles to a separate.class file Inner classes compile to files with a $ in their names

4 4 Member classes A member class is an “ordinary” inner class class Outer { int n; class Inner { int ten = 10; void setNToTen( ) { n = ten; } } void setN ( ) { new Inner( ).setNToTen( ); } }

5 5 Member classes II Member classes are often used to handle events: Button b = new Button ("Click Me"); b.addActionListener (new Clicker( )); … class Clicker implements ActionListener { … } A member class can access the variables of the enclosing class This is what makes them so useful! Member classes are very easy Declare them where you would declare a field or a method

6 6 Local classes A local class is a class defined inside a method Like any other local declarations, the class declaration is available only within that method However, objects created from that local class can “escape” the class by being assigned to nonlocal variables Because its instances may exist after the method exits, code in the local class cannot access variables declared in the method unless they are declared final This makes them practically useless A local class can have access to private variables of the enclosed class

7 Local classes II class LocalClassExample{ private String name = "KFUPM"; public void method ( ) { int j = 20; final int k = 30; class Local { public void test ( ) { //System.out.println(j); //Error as j is not final System.out.println(k); //OK k is final //Like an inner class, instance variables of //the enclosing object can be accessed. System.out.println ( name ) ; } } Local loc = new Local ( ) ; loc.test ( ) ; } public static void main ( String [ ] args ) { LocalClassExample obj = new LocalClassExample ( ); obj.method ( ) ; } } 7

8 8 Anonymous inner classes It is a local class without a name. Anonymous inner classes are convenient for short code (typically a single method) b.addActionListener( anonymous inner class ); The anonymous inner class can be either: new Superclass ( args ) { body } or new Interface ( args ) { body } Notice that no class name is given--only the name of the superclass or interface If it had a name, it wouldn’t be anonymous, now would it?

9 9 Example anonymous inner class An ActionListener is a Java-supplied interface for listening to Buttons and some other things The format (from the previous slide) is new Interface ( args ) { body } b.addActionListener (new ActionListener( ) { public void actionPerformed (ActionEvent e) { System.out.println (“Ouch!”); } } ) ; Like member classes, anonymous inner classes have full access to the fields and methods of the containing class

10 Example anonymous inner class II 10

11 11 Static member classes static class StaticMember { … } A static member class can access only static variables of the outer class A static member class isn't “really” an inner class, but a top-level class that happens to be written inside another class Static member classes are not too useful Static member classes cannot extends from non-static inner class

12 Static member classes II LinkedList.java 12

13 13 Summary Member classes An ordinary class, just defined within another Has full access to the variables of the enclosing class Anonymous classes Useful for short Listeners used in only one place Has full access to the variables of the enclosing class Static member classes Defined inside another class, but acts like an outer class Local classes Defined within a method Can access final variables in the enclosing class

14 14 The End


Download ppt "2-Dec-15 Inner Classes By Alguien Soy. 2 Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside."

Similar presentations


Ads by Google