2011年计算机二级考试JAVA知识点整理(31)

2014-10-31 23:45:14 · 作者: · 浏览: 56

  1.2.3 在外部类中定义内部类


  如下所示代码为在外部类中定义两个内部类及它们的调用关系:


  public class Outer{


  int outer_x = 100;


  class Inner{


  public int y = 10;


  private int z = 9;


  int m = 5;


  public void display(){


  System.out.println("display outer_x:"+ outer_x);


  }


  private void display2(){


  System.out.println("display outer_x:"+ outer_x);


  }


  }


  void test(){


  Inner inner = new Inner();


  inner.display();


  inner.display2();


  //System.out.println("Inner y:" + y);//不能访问内部内变量


  System.out.println("Inner y:" + inner.y);//可以访问


  System.out.println("Inner z:" + inner.z);//可以访问


  System.out.println("Inner m:" + inner.m);//可以访问


  InnerTwo innerTwo = new InnerTwo();


  innerTwo.show();


  }


  class InnerTwo{


  Inner innerx = new Inner();


  public void show(){


  //System.out.println(y);//不可访问Innter的y成员


  //System.out.println(Inner.y);//不可直接访问Inner的任何成员和方法


  innerx.display();//可以访问


  innerx.display2();//可以访问


  System.out.println(innerx.y);//可以访问


  System.out.println(innerx.z);//可以访问


  System.out.println(innerx.m);//可以访问


  }


  }


  public static void main(String args[]){


  Outer outer = new Outer();


  outer.test();


  }


  }


  以上代码需要说明有,对于内部类,通常在定义类的class关键字前不加public 或 private等限制符,若加了没有任何影响,同时好像这些限定符对内部类的变量和方法也没有影响( )。另外,就是要注意,内部类Inner及InnterTwo只在类Outer的作用域内是可知的,如果类Outer外的任何代码尝试初始化类Inner或使用它,编译就不会通过。同时,内部类的变量成员只在内部内内部可见,若外部类或同层次的内部类需要访问,需采用示例程序中的方法,不可直接访问内部类的变量。


  编辑推荐: