内部类

转载:wangbokun  http://www.cnblogs.com/bokun-wang/archive/2011/12/02/2272091.html

1.内部类的今本定义

   在类内部可定义成员变量与方法,而且在类内部也可以定义另一个类。如果在类Outer的内部定义一个Inner,此时类Inner就成为内部类,而Outer则成为外部类。

内部累可声明成public或private。当内部累声明成public或者private时,对其访问的限制与成员变量和成员方法相同。下面列出了内部累的定义格式:

【内部类的声明格式】

  标识符 class 外部类的名称{

    //外部类的成员

    标识符class内部类的名称{

    //内部累的成员

  }

}

范例:定义内部类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package   test;
 
class   Outer { //定义外部类
     private   String info = "hello word" ; //定义外部类的素有属性
 
     class   Inner {              //定义内部类
         public   void   print() { //内部类的方法
             System.out.println(info); //直接访问外部类私有属性
         }
     };
 
     public   void   fun() {              //定义方法
         new   Inner().print(); //通过内部累对象调用方法
     }
};
 
public   class   InnerClassDemo01 {
     public   static   void   main(String args[]) {
         new   Outer().fun();          //调用外部类的fun()方法
     }
}

  结果:

  hello word

内部类的唯一好处:就是可以方便的访问外部类中的私有属性。

2.使用static定义内部类

使用static可以声明属性或方法,而使用static也可以声明内部类,用static声明的内部类变成了外部类,但是static声明的内部类不能访问非static的外部类属性,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package   test;
 
class   Outer { // 定义外部类
     private   static   String info = "hello word" ; // 定义外部类的素有属性
 
     static   class   Inner { // 使用static定义内部类为外部类
         public   void   print() {
             System.out.println(info);
         }
     };
};
 
public   class   InnerClassDemo01 {
     public   static   void   main(String args[]) {
         new   Outer.Inner().print(); // 访问内部类
     }
}

  

3.在外部访问内部类

【在外部访问内部类】

外部类.内部类  内部类对象=外部类实例.new   内部类();

首先要找到外部类的实例化对象之后才可以通过外部类的实例化对像去实例化内部类的对象。

例子:

?
package   test1;
 
class   Outer {
     private   String info = "hello word!!!" ;
 
     class   Inner {
         public   void   print() {
             System.out.println(info);
         }
     }
}
 
public   class   InnerClassDemo04 {
     public   static   void   main(String args[]) {
         Outer out = new   Outer();
         Outer.Inner in = out. new   Inner();
         in.print();
     }
}

  结果:

hello word!!!

4.在方法中定义内部类

也可以在方法中定义一个内部类,但是在方法定义的内部类不能直接访问方法中的参数,如果方法中的参数要想被内部类所访问,则参数前必须加上final关键字。

范例:在方法中定义内部类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package   test2;
 
class   Outer {
     private   String info = "hello  word!!!" ;
 
     public   void   fun( final   int   temp) {
         class   Inner {
             public   void   print() {                           //方法中定义一个内部类
                 System.out.println( "类中的属性:"   + info);
                 System.out.println( "方法中的参数:"   + temp);
             }
         }
         ;
         new   Inner().print();
     }
}
 
public   class   InnerClassDemo05 {
     public   static   void   main(String args[]) {
         new   Outer().fun( 30 );
     }
}

  结果:

类中的属性:hello word!!! 方法中的参数:30

转载于:https://www.cnblogs.com/lm3306/p/3274648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值