java的四种内部类:成员内部类、静态内部类、局部内部类、匿名内部类
1、成员内部类:内部类位于成员变量的位置;成员内部类必须与外部类的某个对象关联,所以成员内部类中不能有静态方法
2、静态内部类:用static修饰的位于类变量位置的内部类。注意:static不能修饰类,但可以修饰内部类
3、局部内部类:定义在方法内部的类
4、匿名内部类:特殊的局部内部类,是由局部内部类改写
能改成匿名内部类的局部内部类需要满足:
4.1该内部类继承自某个类或者实现某个接口
4.2该内部类在整个方法中之创建了一个对象
public class TestInnerClass
{
public static void main(String args[]){
//内部类创建及使用方法一
//实例化外部类
OuterClass oc = new OuterClass();
//调用外部类的某个方法
oc.doOuterMethod();
//内部类创建及使用方法二
OuterClass.InnerClass inner; //定义引用变量
//OuterClass ocOther = new OuterClass(); //实例化外部类
//inner = ocOther.new InnerClass(); //通过外部类的对象实例化内部类
inner = new OuterClass().new InnerClass();
inner.doInnerMethod(); //执行内部类的方法
}
}
//成员内部类定义以及使用
class OuterClass
{
private int age = 11;
//内部类编译后产生独立的字节码文件(.class),命名方式为:外部类名$内部类名.class,如:OuterClass$InnerClass.class
//private class InnerClass //1、private不能修饰类,但可以修饰内部类,表示此内部类只能由OuterClass类使用
//内部类创建,方法二,在外部类的外面创建,但要求此内部类不能为private
class InnerClass
{ //2、成员内部类位于一个类的内部,所有方法的外面
public void doInnerMethod(){
System.out.println(age); //3、内部类中的方法可以调用外部类的私有属性
}
//public static void doStaticMethod(){}//成员内部类中不能有静态方法
}
//内部类的创建,方法一:在外部类中定义方法,在方法中创建内部类并执行某个内部类的某个函数,此时内部类可以使用private修饰
public void doOuterMethod(){
InnerClass ic = new InnerClass();
ic.doInnerMethod();
}
}
© 2014 – 2015, 李德涛博客. 版权所有.