如何应用Java的静态内部类Java认证考试

文章作者 100test 发表时间 2009:07:08 01:24:37
来源 100Test.Com百考试题网


  在上一小节我们讨论了内部类,即在一个类中包含有另外一个或者多个类(见本书12.3.3小节)。与内部类相似,静态内部类指在一个类的内部包含有另外一个或者多个静态类。例如:
  public class OuterClass {
  ...
  static class StaticInnerClass1 { //内部静态类
  //只可以访问OuterClass的静态成员
  ...
  } //StaticInnerClass结束
  ...
  static class StaticInnerClassN { //更多静态内部类
  //只可以访问OuterClass的静态成员
  ...
  } //StaticInnerClassN结束
  } //OuterClass结束
  与一般内部类不同,在静态代码中不能够使用this操作,所以在静态内部类中只可以访问外部类的静态变量和静态方法。使用静态内部类的目的和使用内部类相同。如果一个内部类不依赖于其外部类的实例变量,或与实例变量无关,则选择应用静态内部类。
  如下例子演示怎样使用静态内部类:
  ///完整程序存在本书配套资源目录Ch12名为StaticInnerClassTest.java
  public class StaticInnerClassTest {
  public static void main( String args[] ) {
  OuterClass2 outer = new OuterClass2().
  OuterClass2.StaticInnerClass.innerMethod().
  //调用静态内部类的静态方法
  OuterClass2.outerMethod().
  //创建静态内部类对象
  OuterClass2.StaticInnerClass staticInner = new OuterClass2.StaticInnerClass().
  int num = staticInner.innerMethod2(). //调用静态内部类实例方法
  }
  }
  class OuterClass2 { //外部类
  private double x = 0.0. //内部静态类不可以访问外部类实 例变量
  static private int n = 10. //外部类静态变量
  static void outerMethod() { //外部类静态方法
  System.out.println("from OuterClass...").
  }
  void outerMethod2() {
  System.out.println("from OuterClass’ instance method2()...").
  }
  static class StaticInnerClass { //静态内部类
  static private int m = 5. //静态内部类静态变量
  static void innerMethod() { //静态内部类静态方法
  int sum.
  n = 20. //只可以访问外部类静态变量
  sum = n m.
  System.out.println("from InnerClass sum = " sum).
  outerMethod(). //只可以调用外部类静态方法
  }
  int innerMethod2() {
  n = 100.
  outerMethod().
  System.out.println("from InnerMethod2() n = " n).
  return n.
  }
  } //静态内部类结束
  } //外部类结束
  如同不用创建对象就可调用静态方法一样,上例静态内部类中的静态方法利用:
  OuterClass2.StaticInnerClass.innerMethod(). //静态内部类调用其静态方法
  来调用。注意,可以在静态内部类的方法中,直接访问外部类的静态变量n和调用静态方法outerMethod()。但不允许访问外部类的实例变量x以及实例方法outerMethod2()。
  静态内部类中也可以提供实例方法,如:
  static class StaticInnerClass {
  int innerMethod2() {
  n = 100. //只可访问外部类静态变量
  outerMethod(). //只可调用外部类静态方法
  System.out.println("from InnerMethod2() n = " n).
  return n.
  }
  } //静态内部类结束
  静态内部类的实例方法中亦只允许访问外部类的静态成员。
  可以使用下列语法格式创建一个静态内部类对象并且调用其实例方法,以及静态方法:
  OuterClass2.StaticInnerClass staticInner = new OuterClass2.StaticInner Class(). //创建静态内部类对象
  int num = staticInner.innerMethod2(). //调用实例方法
  staticInner.innerMethod(). //调用其静态方法

相关文章


Java类中域和方法设置中的常见错误Java认证考试
Java代码的优化策略Java认证考试
Java线程知识的深入分析Java认证考试
java基础入门:网络协议概念Java认证考试
如何应用Java的静态内部类Java认证考试
漫谈Java数据库存取技术Java认证考试
讨论:究竟Java有什么用Java认证考试
浅谈Java网站开发过程中的优势Java认证考试
java认证辅导:为JBoss控制台加锁Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛