成员内部类(非静态内部类,静态内部类),匿名内部类
非静态内部类
public class 内部类 {
public static void main(String[] args) {
//先创建外部类实例,再用外部类实例创建内部类实例
Outer.Inner inner =new Outer().new Inner();
inner.show();
Outer outer =new Outer;
Outer.Inner inner=outer.new Inner();
}
class Outer{
private int num=10;
public void method() {
}
class Inner{
int num=20;
public void show() {
int num=30;
System.out.println("外部类的内容"+" "+Outer.this.num);
System.out.println("内部类的内容"+" "+this.num);
System.out.println(num);
}
}
}
静态内部类、
public class 内部类{
public static void main(String[] args) {
//通过 new 外部类。内部类();来创建对象
Outer.Inner inner =new Outer.Inner();
inner.method();
}
}
class Outer{
static class Inner{
public void method() {
System.out.println("静态内部类");
}
}
}
匿名内部类
public class 匿名内部类 {
public static void text01(AA a) {
a.aa();
}
public static void main(String[] args) {
匿名内部类.text01(new AA() {
@Override
public void aa() {
// TODO Auto-generated method stub
System.out.println("匿名内部类.main(...).new AA() {...}.aa()");
}
});
}
}
interface AA{
void aa();
}