JAVA中的内部类

来源:互联网 发布:注射死刑 知乎 编辑:程序博客网 时间:2024/06/05 10:59

内部类的顾名思义就是定义在一个类里面的类,如下两个Test类都是内部类

Class Person{

private String name;

  private int age;

}

Class Test1{

private class Person;

……

}

Class Test2{

public getName(){

private class Person;

……

}

}

内部类可以定义在类中的任何地方,可以作为属性,也可以定义在方法中。

之所以使用内部类,是因为内部类可以方便的访问外部类的私有成员。如下用Inner类中的print()函数打印Outer类中的私有属性的两种实现方式:

第一种方式,不使用内部类:

Class Outer{

private String name="Hello World";

public fun(){

new Inner(this).print();

}

public getName(){

return this.name;

}

}

Class Inner{

private Outer out;

public Inner(Outer out){

this.out=out;

}

public print(){

System.out.println("name值是"+this.out.getName());

}

}

public class Test{

public static void main(String arg[]){

new Outer().fun();

}

}

第二种方式,使用内部类:

Class Outer{

private String name="Hello World";

Class Inner{

public void print(){

System.out.println("name值是"+this.name);

}

}

public void fun(){

new Inner().print();

}

}

public Class Test{

public static void main(String args[]){

new Outer().fun();

}

}

由此可见,内部类虽然结构混乱,但是,能方便的访问外部类的私有成员,所以有其重要的用处,在各种框架中应用尤其普遍。

内部类的实例化方式如下:

外部类.内部类 内部类对象 = 外部类实例.new 内部类实例();

例如:Outer out = new Outer();Outer.Inner in =out.new Inner();

其中比较特殊的是用static声明的内部类,可以通过外部类.内部类来访问。

另外,在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则在参数前要加上final关键字声明。

1 0