Java提高篇(三):內部類和匿名內部類
阿新 • • 發佈:2018-12-17
1 public class innerclass {
2 public static void main(String[] args) {
3 System.out.println("下面是是內部類的程式展示");
4 //建立外部類和內部類的方法有點不相同
5 A a=new A();
6 A.B b=new A().new B();
7 a.say2();
8 b.sayit();
9 System.out.println("現在開始匿名內部類程式的編寫\n");
10 Chouxiang c=new Chouxiang() {
11 String name="Geek Song too";
12 public void say3()
13 {
14 System.out.println("這是匿名內部類當中的方法,重寫了抽象類的方法");
15 System.out.println(name);
16 }
17 };//在使用匿名內部類的時候,當這個類在陳述完之後,是需要打分號的。
18 c.say3();
19 System.out.println("我們來看看這個name到底是抽象類當中的name還是匿名內部類當中的"+c.name);//結果果然是父類當中的屬性,和我們多型的性質相重合了
20 //這就是所謂的向上轉型。現在我們再來試試介面的匿名內部類實現
21 Jiekou yui=new Jiekou() {
22 @Override//由於必須實現介面當中的方法,因此計算機就自動為我們寫上了override的識別符號了
23 public void say5() {
24 System.out.println("這是繼承的介面當中的方法");
25 }
26 };
27 yui.say5();
28 }
29 }
30 class A
31 {
32 int waibu=12;
33 public void say2()
34 {
35 System.out.println("這是外部類當中的方法");
36 }
37 class B
38 {
39 int neibu=13;
40 public void sayit()
41 {
42 System.out.println("這是內部類裡面的方法");
43 System.out.println("使用內部類和外部類當中的數值進行想加的結果是"+(neibu+waibu));
44 //之所以內部類可以使用外部類的屬性是因為在建立物件的時候,已經給內部類的物件附加了一個外部類的物件,內部類的物件是建立在外部類物件的基礎上的。
45 }
46 }
47 }
48 //雖然內部類的程式已經成功了,但是匿名內部類的程式還沒有成功,現在我們來建立一個匿名內部類(在主方法當中,首先應該建立一個抽象類或者介面)
49 abstract class Chouxiang
50 {
51 String name="Geek Song";//抽象類的屬性是不會被呼叫的,除了方法
52 public void say3()
53 {
54 System.out.println("這是抽象類當中的方法,抽象類當中是允許有具體方法來進行實現的,介面不行");
55 }
56
57 }
58 interface Jiekou
59 {
60 public void say5();
61
62 }