Android(java)学習ノート111:メンバーの位置の内部クラスの紹介

20150 ワード

1.内部クラスの定義
 1 /*

 2       :  3             ,          。  4    :  A       B, B     。  5     

 6  7  A:               ,    。  8  B:            ,      。  9     

10 */

11 class Outer { 12     private int num = 10; 13     

14     class Inner { 15         public void show() { 16  System.out.println(num); 17  } 18  } 19     

20     public void method() { 21         //      22         //show();

23     

24         Inner i = new Inner(); 25  i.show(); 26  } 27     

28 } 29 

30 class InnerClassDemo { 31     public static void main(String[] args) { 32     

33  } 34 }

 
2.内部クラスの場所
 1 /*

 2         3      :         ,        。  4      :         ,        。  5         

 6         

 7      :         ,        。  8         

 9 */

10 class Outer { 11     private int num = 10; 12 

13     //    

14     /*

15  class Inner { 16         

17  } 18     */

19     

20 

21     public void method() { 22         //    

23         class Inner { 24         

25  } 26  } 27 } 28 

29 class InnerClassDemo2 { 30     public static void main(String[] args) { 31         

32  } 33 }
 1 /*

 2       :  3  4      .         =      .     ;  5 */

 6 class Outer {  7     private int num = 10;  8     

 9     class Inner { 10         public void show() { 11  System.out.println(num); 12  } 13  } 14 } 15 

16 class InnerClassDemo3 { 17     public static void main(String[] args) { 18         //  :    Inner  show()   19         //Inner i = new Inner(); 20         //i.show();---          21         

22         //  :    .         =      .     ;

23         Outer.Inner oi = new Outer().new Inner(); 24  oi.show(); 25  } 26 }

 
3.インスタンス整理メンバー内部クラスの修飾子
 1 /*

 2  3  private             4  static           5    :                    。  6     

 7    :     (    ,      。)  8         

 9  class Body { 10  private class Heart { 11  public void operator() { 12  System.out.println("    "); 13  } 14  } 15             

16  public void method() { 17  if(        ) { 18  Heart h = new Heart(); 19  h.operator(); 20  } 21  } 22  } 23         

24 25  Body.Heart bh = new Body().new Heart(); 26  bh.operator();//                   "  "     ,         ? 27  //  private ,       ,  ,    ? 28  Body b = new Body(); 29  b.method(); 30 */

31 class Outer { 32     private int num = 10; 33     private static int num2 = 100; 34     

35     //                         

36     public static class Inner { 37         public void show() { 38             //System.out.println(num);//                    ,num    ,      ,num2    

39  System.out.println(num2); 40  } 41 

42         public static void show2() { 43             //System.out.println(num);

44  System.out.println(num2); 45  } 46  } 47 } 48 

49 class InnerClassDemo4 { 50     public static void main(String[] args) { 51         //      52         //          ,       static    ,53         //Outer.Inner oi = new Outer().new Inner(); 54         //oi.show(); 55         //oi.show2(); 56         

57         //                 : 58         //  :    .         = new     .    ();

59         Outer.Inner oi = new Outer.Inner(); 60  oi.show(); 61  oi.show2(); 62         

63         //show2()        

64  Outer.Inner.show2(); 65  } 66 }

4.面接問題
 1 /*

 2  3           30,20,10。  4         

 5  6  1: 7  2:        this    8  Outer.this  9 */

10 class Outer { 11     public int num = 10; 12     class Inner { 13         public int num = 20; 14         public void show() { 15             int num = 30; 16  System.out.println(num); 17             System.out.println(this.num); 18             //System.out.println(new Outer().num);//          

19             System.out.println(Outer.this.num); 20  } 21  } 22 } 23 class InnerClassTest { 24     public static void main(String[] args) { 25         Outer.Inner oi = new Outer().new Inner(); 26  oi.show(); 27  } 28 }