学习Java——成员内部类

内部类是在外部类的内部在定义一个类,引入内部类的原因:

内部类能够隐藏起来,不被同一包的其它类访问;

内部类可以访问其所处的外部类所有属性;

在回调方法处理中,匿名内部类尤为便捷,特别使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了。


猜你喜欢

转载自blog.csdn.net/asd1637579311/article/details/80372595
今日推荐