内部类是在外部类的内部在定义一个类,引入内部类的原因:
内部类能够隐藏起来,不被同一包的其它类访问;
内部类可以访问其所处的外部类所有属性;
在回调方法处理中,匿名内部类尤为便捷,特别使GUI中的事件处理。
public class outclass { private int i=10; private int j=20; private static int count=0; public static void func1() {}; public void func2() {}; class innerclass{ //static int inner_i=100; 成员内部类不允许定义静态变量 int j=100; int k=1; void innerfunc1() { System.out.println("内部类中k的值为"+k); System.out.println("内部类中j的值为"+j); System.out.println(this.j);//同上 System.out.println("外部类中j的值为"+outclass.this.j); System.out.println("外部类中count的值为"+count); func1(); //直接访问外部类中的方法 func2(); } } public void func3() { innerclass inner=new innerclass(); inner.innerfunc1(); } public static void main(String[] args) { //内部类的创建原则使,首先创建外部类,然后通过此对象创建内部类对象 outclass out=new outclass(); outclass.innerclass out1=out.new innerclass(); out1.innerfunc1(); //也可以将代码合成一块 //outclass.innerclass out2=new outclass().new innerclass(); //out2.innerfunc1(); } }
输出结果:
内部类中k的值为1 内部类中j的值为100 100 外部类中j的值为20 外部类中count的值为0
内部类也可以用访问修饰符修饰 如可以在innerclass前加入private
private class innerclass { ...... } //此时的内部类就是私有的内部类,不能再outclass的范围之外访问innerclass了。