1. 程式人生 > >Java提高篇(三):內部類和匿名內部類

Java提高篇(三):內部類和匿名內部類

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 }