知识点:
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.匿名类 : 只在一个方法里面使用一次。