首页 > 代码库 > Java内部类
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内部类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。