码迷,mamicode.com
首页 > 编程语言 > 详细

Java: 内部类

时间:2015-03-01 22:17:34      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

内部类的访问规则:
  1,内部类可以直接访问外部类中的成员,包括私有(因为内部类持有了一个外部类的引用,格式为 外部类名.this)
  2,外部类要访问内部类,必须建立内部类对象

访问格式:
1,当内部类定义在外部类的成员位置上,且非private,可以在其他外部类中访问;
  外部类名.内部类名 变量 = 外部类对象.内部类对象;
  Outer.Inner in = new Outer().new Inner();

 1 class Outer
 2 {
 3     int x = 3;
 4 
 5     void method()
 6     {
 7         Inner in = new Inner();
 8         in.function();
 9     }
10 
11     class Inner//内部类
12     {
13         int x = 4;
14         void function()
15         {
16             int x = 6;
17             System.out.println("Inner class:" + x);//x=6
18             System.out.println("Inner class:" + this.x);//x=4
19             System.out.println("Inner class:" + Outer.this.x);//x=3
20         }
21     }
22 }
23 class InnerClassDemo
24 {
25     public static void main(String[] args) 
26     {
27         
28         Outer out = new Outer();
29         out.method();
30 
31         //直接访问内部类的成员
32         Outer.Inner in = new Outer().new Inner();
33         in.function();
34     }
35 }

 

2,当内部类在成员位置上,就可以被成员修饰符所修饰
  比如,private:将内部类在外部类中进行封装。
  static:内部类就具备了静态的特性.
  当内部类被statci修饰后,就只能直接访问外部类中的static成员,访问收到局限。

  在其他外部类中,如何访问static内部类的非静态呢?
  new Outer.Inner().function();

  在其他外部类中,如何访问static内部类的静态呢?
  Outer.Inner().function();

注意:
  当内部类中的定义了静态成员,该内部类必须是静态的

  当外部类中的静态方法访问内部类时,内部类也必须是静态的

 1 class Outer
 2 {
 3     private static int x = 3;
 4 
 5     static class Inner//静态内部类
 6     {
 7         void function()
 8         {
 9             System.out.println("Inner class:" + x);
10         }
11     }
12 }
13 class InnerClassDemo
14 {
15     public static void main(String[] args) 
16     {
17         new Outer.Inner().function();
18     }
19 }

 

Java: 内部类

标签:

原文地址:http://www.cnblogs.com/siyingcheng/p/4307638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!