Java内部类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java内部类相关的知识,希望对你有一定的参考价值。
1,成员内部类
就是在一个类中定义一个类,注意这个内部类可以在类的成员函数中使用,也可以由外部程序调用,取决于内部类的访问级别,如果设置为private,则外部程序不能直接使用这个内部类。
- package?wz.learning;??
- ?? ?
- public?class?Example16?{??
- ????public?static?void?main(String[]?args)?{??
- ?? ?
- ????????Outer?outer?=?new?Outer();??
- ????????outer.test();??
- ?????? ?
- ????????//外部调用内部类,注意必须是一个实例.new 内部类的方式,??
- ????????//下面两种都是可以的。?????
- ????????//Outer.Inner?i?=?(new?Outer()).new?Inner();??
- ????????Outer.ClassInner?i?=?outer.new?ClassInner();??
- ????????i.show();??
- ????}??
- }??
- ?? ?
- class?Outer{??
- ????int?num;??
- ????public?void?test(){??
- ????????num?=?5;??
- ????????ClassInner?inner?=?new?ClassInner();??
- ????????inner.show();?????????
- ????}??
- ????//?这里可以设置ClassInner为private,这样仅有Outer类可以访问??????
- ????//?Class?inner?class??
- ????class?ClassInner{??
- ????????void?show(){??
- ????????????System.out.println("ClassInner?num="?+?num);??
- ????????}??
- ????}??
- }??
2,函数内部类
在函数的内部也可以声明内部类,当然这个内部类只能在函数内部使用,并且注意,必须先声明内部类,再使用,否则编译出错。
- package?wz.learning;??
- ?? ?
- public?class?Example16?{??
- ????public?static?void?main(String[]?args)?{??
- ?? ?
- ????????Outer?outer?=?new?Outer();??
- ????????outer.test();?????
- ?? ?
- ????}??
- }??
- ?? ?
- class?Outer{??
- ????int?num;??
- ????public?void?test(){??
- ????????num?=?5;??
- ????????//?这里需要先定义MethodInner,再new?MethodInner();
- ????????//?Method?inner?class??
- ????????class?MethodInner{??
- ????????????void?show(){??
- ????????????????System.out.println("MethodInner?num="?+?num);??
- ????????????}??
- ????????}??
- ????????MethodInner?inner2?=?new?MethodInner();??
- ????????inner2.show();??
- ????}??
- ?? ?
- }??
3,静态内部类
在一个类中,声明一个带有static关键字的内部类,这个内部类可以访问类中的静态成员变量。
- package?wz.learning;??
- ?? ?
- public?class?Example18?{??
- ?? ?
- ????public?static?void?main(String[]?args)?{??
- ?? ?
- ????????Outer18.Inner?inner?=?new?Outer18.Inner();??
- ????????inner.show();??
- ????}??
- ?? ?
- }??
- class?Outer18{??
- ????private?static?int?num=6;??
- ????static?class?Inner{??
- ????????void?show(){??
- ????????????System.out.println("num="?+?num);??
- ????????}??
- ????}??
- }??
以上是关于Java内部类的主要内容,如果未能解决你的问题,请参考以下文章