JAVA内部类:成员内部类

内部类,顾名思义就是定义在类中的类,按照定义的位置,分为成员内部类和局部内部类

一、成员内部类

1. 类的成员有属性和方法,如果内部类定义的位置与外部类的属性或方法同级,则该内部类被称之为成员内部类。

成员内部类,也是外部类的一个成员。

public class Outter{

  private String name;

  //成员内部类

  class Inner{

  }

}

2. 成员内部类,可以自由地使用外部内的成员(属性和方法),包括私有属性和方法。

public class Outter{

  private String name;

  class Inner{

    public void method(){

      System.out.println(name);//使用外部类的属性

    }

  }

}

3. 访问内部类

通过建立外部类对象来访问内部类

Outter.Inner inn = new Outter().new Inner();

inn.method();

4. 内部类的编译文件

如上面这个例子,在bin目录下会内部类编译文件为

Outter$Inner.class文件

$符号代表后面的类为前面类的内部类

如果这样:

public class Outter{

  class Inner01{

    class Inner02{}

  }

}

内部类中还有一个内部类,则编译文件有:

Outter.class

Outter$Inner01.class

Outter$Inner01$Inner02.class

5. 内部类中同名变量的调用

public class Outter{

  int i = 1;

  class Inner{

    int i = 2;

    public void method(){

      int i = 3;

      System.out.println(i); //这里打印的是3,方法内的变量,就近调取

      System.out.println(this.i); //这里打印的是2,this代表Inner这个类对象,访问类的属性用this

      System.out.println(Outter.this.i);//这里打印的是1,通过外部类类名访问外部类对象this访问自已的属性。

    }

  }

}

二、局部内部类

posted on 2018-06-03 16:45  adamal  阅读(138)  评论(0)    收藏  举报