java 中的内部类

来源:互联网 发布:数据库修改语句update 编辑:程序博客网 时间:2024/05/04 14:13
package TestInner;public class Inner {class Contents{private int i=11;public int value(){return i;}}   class  Destination{private  String lable;Destination(String lab){lable=lab;}String  readLable(){System.out.println(lable);return lable;}}public Destination  to(String s){return new Destination(s);}public Contents cont(){return new Contents();}public  void  ship(String des){Contents contents=cont();Destination destination=to(des);}   public static void main(String[] args) {Inner inner=new Inner();inner.ship("test");Inner inn=new Inner();Inner.Contents c=inn.cont();System.out.println(c.value());}}
 

程序是一个内内嵌了2个内部类。如果想在Inner  (这里是外部类) static 方法中中生成一个内部类对象就要用外部类的类名.内部类名。如:Inner.Contents c=inn.cont();

如果在外部类中的非 static 方法中生成内部类对象 则可以直接  使用内部类 类名 new出对象。如public Contents cont(){return new Contents();}

 

总结:

 在类中调用内部类的情况:

 <1>内部类是static : 在外部类或者其他类中的static 方法 或者非静态方法都可以直接new 出内部类的对象。

<2>内部类不是static :(1)在外部类中的static方法中必须使用外部类的类名+内部类的类名。非static 方法可以直接new 出对象(2)如果在其他的类中调用不是外部类中调用必须使用外部类的名字+类名。