知识点:
1. 四种嵌套类。
2. 什么情况下该用哪种嵌套类。
1. 四种嵌套类
嵌套类,定义在另一个类的内部的类。四中嵌套类如下:
a.静态成员类
b.非静态成员类
c.局部类
d.匿名类
a.静态成员类
看下面代码,Inner就是静态成员类,定义在类内部,用static修饰,静态成员类内部可以访问外层类的静态成员。
class StaticInner { private static int a = 4; // 静态内部类 public static class Inner { } }
b.非静态成员类
看下面代码,Inner就是非静态成员类,定义在类内部,没有static修饰,非静态成员类可以访问外层类的静态成员和非静态成员。
class StaticInner { private static int a = 4; // 静态内部类 public class Inner { } } c.局部类看下面代码,Inner就是局部类,定义在方法内部,像局部变量不能用访问修饰符修饰。只能在方法中使用。
class LocalInner { int a = 1; public void doSomething() { // 局部内部类 class Inner { } } } d.匿名类看下面代码,下面是线程的匿名内部类,隐含的继承了Thread类,相当于没有名字的局部类
Thread t = new Thread() { public void run() { } }
2. 什么情况下该用哪种嵌套类。
先看你的类在哪里使用,方法里面使用用局部类或者匿名类。类里面使用用静态成员类或非静态成员类。后面按照下面需求看用哪一种类。
a.静态成员类 : 需要外层类实例的引用
b.非静态成员类 : 不需要外层类实例的引用
c.局部类 : 只在一个方法里面使用多次。
d.匿名类 : 只在一个方法里面使用一次。