package com.demo9a;
public class OutClass {
public void f(){System.out.println("aaa");}
public Inner inner(){
return new Inner();
}
public class Inner{
public OutClass outer(){
//.this的使用
return OutClass.this;
}
}
public static void main(String[] args) {
OutClass d=new OutClass();
d.f();
//.new的使用
OutClass.Inner in=d.new Inner();
in.outer().f();
}
}
3. 内部类分类
四个:成员内部类,静态内部类,匿名内部类,局部内部类
3-1 成员内部类
概念:定义在一个类内部的类。
注意:
A.成员内部类中不能定义静态方法,只能定义 static final的静态成员。
B. 创建内部类实例:外部类名.内部类名 变量名=外部类实例名.new 内部类名();
C. 内部类访问外部类对象。 外部类名.this.成员方法/属性
D. 成员内部类编译的时候,会出现独立的class文件
E. 与外部类同级的类继承内部类时,构造方法的第一句调用“外部类对象名.super()”
package com.demo9aa;
public class OutClass {
class inner{
public void f(){
System.out.println("成员内部类");
}
}
static class innerA{
public void f(){
System.out.println("静态内部类");
}
}
public void f(){
class InnerB{
public void f(){
System.out.println("局部内部类");
}
}
InnerB b=new InnerB();
b.f();
}
public Object obj=new Object(){
private String name="匿名内部类";
};
}