内部类有三种:静态内部类,成员内部类,局部内部类,匿名内部类
1.静态内部类
public class static ClassName
静态内部类只能访问外部类静态的成员变量(类比静态方法)
在外部类以外调用静态内部类:
ClassName cn = new OutClass.ClassName();//类比静态方法的调用
2.成员内部类
public class ClassName
成员内部类与外部类的方法同一级别,可以访问外部类的成员变量,当外部类的方法要访问此类
new this.ClassName();
外部类以外的调用
new OutClass().new ClassName();
3.局部内部类
声明在外部类的方法内,类比方法的局部变量,外部类无法直接调用此类
OutClass{
public void run(){
class ClassName{
}
1.静态内部类
public class static ClassName
静态内部类只能访问外部类静态的成员变量(类比静态方法)
在外部类以外调用静态内部类:
ClassName cn = new OutClass.ClassName();//类比静态方法的调用
2.成员内部类
public class ClassName
成员内部类与外部类的方法同一级别,可以访问外部类的成员变量,当外部类的方法要访问此类
new this.ClassName();
外部类以外的调用
new OutClass().new ClassName();
3.局部内部类
声明在外部类的方法内,类比方法的局部变量,外部类无法直接调用此类
OutClass{
public void run(){
class ClassName{
}
}
4.匿名内部类
匿名内部类没有 class 关键字,没有类名,没有extends 和implement 关键字,但是匿名内部类会隐式的继承类或者接口
String str = ClassName.toString(new Date(){
//继承了Date类
});
匿名内部类可以重写它继承的类的方法。常用于方法参数。