Java中,可以将一个类定义到另一个类或者方法中,这样的类被称为内部类。
四种内部类
一、成员内部类
public class Outter {//外部类
private Inner inner = null;
public Outter() {
}
public Inner getInnerInstance() {
if (inner == null)
inner = new Inner();
return inner;
}
public class Inner {//成员内部类
public Inner() {
}
}
}
成员内部类是最普通的内部类,定义在另一个类的内部,对于外部类而言,内部类可以看作一个成员变量。成员内部类可以无条件访问外部类的所有成员属性和方法,而外部类如果想访问内部类则必须创建一个内部类的对象。内部类是依赖外部类而存在的。
二、局部内部类
class People{
public People() {
}
}
class Man{
public Man(){
}
public People getWoman(){
class Woman extends People{ //局部内部类
int age =0;
}
return new Woman();
}
}
局部内部类是定义在一个方法或者一个作用域里面,访问权限仅限于这个作用域。
三、匿名内部类
mBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
上面代码是Android中用来为按钮设置监听器。匿名内部类不能有访问修饰符和static修饰的。是为一个没有构造器的类,大多用于借口回调。
四、静态内部类
public class Outter {//外部类
private Inner inner = null;
public Outter() {
}
public Inner getInnerInstance() {
if (inner == null)
inner = new Inner();
return inner;
}
public static class Inner {//静态内部类
public Inner() {
}
}
}
静态内部类是成员内部类前面加了一个static关键字,静态内部类不需要依赖于外部类,和静态变量很像。
使用内部类的好处
- 每个内部类都能独立的继承一个接口的实现(无论外部类是否已经继承实现),使多继承解决方案变得完整。
- 方便将存在一定逻辑关系的类组织在一起,又可以多外界隐藏。
- 方便编写时间驱动程序。
- 方便编写线程代码。
网友评论