Android(java)学習ノート111:メンバーの位置の内部クラスの紹介
20150 ワード
1.内部クラスの定義
2.内部クラスの場所
3.インスタンス整理メンバー内部クラスの修飾子
4.面接問題
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 }