1.静态内部类(不常用)
2.成员内部类
public class Outer {
public static void main(String[] args) {
Outer.Inner test=new Outer().new Inner();
test.show();
}
private int a=3;
public class Inner{
private int a=2;
void show(){
int a=1;
System.out.println(a);//1
System.out.println(this.a);//2
System.out.println(Outer.this.a);//3
}
}
}
3.局部内部类
定义在main方法里面,纯语法,没什么用。
4.匿名内部类
方便创建子类对象,最终目的为了简化代码编写。
public class test3 {
public static void main(String[] args) {
//为接口快速构造一个子类,并且生成一个对象
swimming s=new swimming() {
@Override
public void swim() {
System.out.println("游泳真好玩");
}
};
// 1.最不简形式
go(s);
// 2.简便形式
go(new swimming() {
@Override
public void swim() {
System.out.println("游泳真好玩");
}
});
// 3.简化成一行代码,后面讲到,这里不讲
}
public static void go(swimming s){
System.out.println("开始游泳");
s.swim();
System.out.println("结束游泳");
}
}
interface swimming{
void swim();
}