就是在一个类中定义一个类,注意这个内部类可以在类的成员函数中使用,也可以由外部程序调用,取决于内部类的访问级别,如果设置为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);??
????????}??
????}??
}??
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();??
????}??
??
?
}??