static 内部类

 Java中我们经常会使用到内部类(inner classes),如果没有Static的内部类,它的instance的创建是依赖于其元类的。这样的关系似乎比较难表达,让我们直接看下面的代码:

   1:  public class Outer {
   2:      int var;
   3:  
   4:      void outerHoge() {
   5:          System.out.println(“hogehoge”);
   6:      }
   7:  
   8:      void outerHote2() {
   9:          /* 普通内部类Instance的生成 */
  10:          Inner i = new Inner();
  11:          staticHoge sh = new StaticHoge();
  12:  
  13:          /* 非static的内部类,下面的写法看起来很正常,
  14:           * 语法上似乎也没什么错误,实际上却是错误的
  15:           * (编译错误)
  16:           */
  17:  //        Inner i2 = new this.Inner();
  18:      }
  19:  
  20:      /* 依赖于元类的内部类*/
  21:      class Inner {
  22:          void innerHoge() {
  23:              /* 依赖于Instance的内部变量
  24:               * 
  25:               */
  26:              var = 1;
  27:              outerHoge();
  28:          }
  29:      }
  30:  
  31:      static class StaticHoge() {
  32:          void methodHoge() {
  33:              /* 下面的写法是不对的
  34:               * 同样是编译错误
  35:               */
  36:  //            var = 10;
  37:  //            outerHoge();
  38:  //            Inner inner = new Inner();
  39:          }
  40:      }
  41:  }
static的内部类的使用,我们可以像Package一样用它:
   1:  public class Outer2 {
   2:      public static class StaticHoge1 {
   3:          //…
   4:      }
   5:      public static class StaticHoge2 {
   6:          //…
   7:      }
   8:  }
可以像下面这样使用:
   1:  Outer2.StaticHoge1 sh1 = new Outer2.StaticHoge1();
   2:  Outer2.StaticHoge2 sh2 = new Outer2.StaticHoge2();
是不是很方便?
不过对于内部的Static类,需要注意下面几点:
●为创建一个static内部类的对象,我们不需要一个外部类对象
●不能从static内部类的一个对象中访问一个外部类对象
●由于static成员只能位于一个类的外部级别,所以内部类不可拥有static数据或static内部类 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值