一、前言
内部类是指在一个类(外部类)内部再定义类(一个或者多个),作为外部类成员,并随着他存在而存在。内部类与外部类之间是从属关系,内部类也可以访问外部类定义的私有成员。
二、示例说明
1.内部类定义示例如下:
public class OuterClass {@b@ @b@ private int s;@b@ @b@ /** 内部类定义及对外部类属性进行累加 */@b@ public class Inner{@b@ public void invokeOuter(){@b@ s++;@b@ }@b@ }@b@ @b@ /** 外部类调用内部类方法 */@b@ public void testInner(){@b@ Inner i=new Inner();@b@ i.invokeOuter();@b@ } @b@ @b@ public static void main(String[] args){@b@ @b@ /**外部类调用内部方法*/@b@ OuterClass outer1=new OuterClass();@b@ outer1.testInner();@b@ @b@ /**内部类创建及方法调用一*/@b@ OuterClass.Inner inner1=new OuterClass().new Inner();@b@ inner1.invokeOuter();@b@ @b@ /**内部类创建及方法调用二*/@b@ OuterClass outer2=new OuterClass();@b@ OuterClass.Inner inner2=outer2.new Inner();@b@ inner2.invokeOuter();@b@ } @b@ @b@}
2.当内部类和外部类都含有相同的成员变量或者方法时,如何区分调用,示例如下:
public class OuterClass {@b@ @b@ /**外部类成员变量s*/@b@ private int s=200;@b@ @b@ /** 内部类 */@b@ public class Inner{@b@ @b@ /**内部类成员变量s*/@b@ private int s=20;@b@ @b@ public void show(){@b@ //打印自己的成员变量s@b@ System.out.println(s);@b@ //打印外部类的成员变量s@b@ System.out.println(OuterClass.this.s);@b@ }@b@ }@b@ @b@ public static void main(String[] args){@b@ OuterClass.Inner inner1=new OuterClass().new Inner();@b@ inner1.show();@b@ }@b@}
运行结果如下:
20@b@200