返回列表 發帖

匿名類別撰寫

當我們在撰寫抽象類別的時候,我們會需要建立子類別,並且透過繼承來去Override改寫抽象類別底下的方法。

但有時候我們這個抽象類別底下要做的事情,可能是一次性的。(也就是只有在這個地方會被使用到)

這時候如果我們額外為他建立一個類別,又顯得有點浪費

舉例來說,我們的Click事件,如果我們為我們的Listener裡面的類別,都獨立建立成為一個Class 那麼會發現會需要建立很多個檔案。

因此我們可以透過匿名類別的撰寫,來將抽象類別實體化,進而實作內部的方法。

也就是說,我們是建立一個沒有名字的類別,實做他底下的抽象方法。
  1.         Bird bird = new Bird(){
  2.                         @Override
  3.                         public void Eat() {
  4.                                 // TODO 自動產生的方法 Stub
  5.                                 System.out.println("我會吃飯");
  6.                         }

  7.                         @Override
  8.                         public void Walk() {
  9.                                 // TODO 自動產生的方法 Stub
  10.                                 System.out.println("我會走路");
  11.                         }
  12.                        
  13.                
  14.                 };
  15.                
  16.                 bird.Name = "我是麻雀";
  17.                 bird.Eat();
  18.                 bird.Walk();
  19.         }
複製代碼

  1. package bird;
  2. public class Asdf {
  3.         public static void main(String[] args) {
  4.                 Bird bird = new Bird()
  5.                 {
  6.                         @Override
  7.                         public void Eat() {
  8.                                 // TODO 自動產生的方法 Stub
  9.                                 System.out.println("我會吃飯");
  10.                         }
  11.                         @Override
  12.                         public void Walk() {
  13.                                 // TODO 自動產生的方法 Stub
  14.                                 System.out.println("我會走路");
  15.                         }                        
  16.                 };            
  17.                 bird.Eat();
  18.                 bird.Walk();
  19.         }
  20. }
複製代碼
我是眾神之王XXX  I love you
0000000000

TOP

  1. public class Main {

  2.         public static void main(String[] args) {
  3.                 // TODO 自動產生的方法 Stub
  4.                 Bird bird = new Bird()
  5.         {

  6.                 @Override
  7.                 public void Eat() {
  8.                         // TODO 自動產生的方法 Stub
  9.                         System.out.println("我會吃飯");
  10.                 }

  11.                 @Override
  12.                 public void Walk() {
  13.                         // TODO 自動產生的方法 Stub
  14.                         System.out.println("我會走路");
  15.                 }
  16.                
  17.         };
  18.         
  19.         
  20.         
  21.         
  22.         bird.Eat();
  23.         bird.Walk();

  24.         }

  25. }
複製代碼

TOP

  1. package bbs.istak.org.tw;

  2. public class Main {

  3.         public static void main(String[] args) {
  4.                 Bird bird = new Bird(){  

  5.                         @Override
  6.                         public void eat() {
  7.                                 System.out.println("我會吃飯");                               
  8.                         }

  9.                         @Override
  10.                         public void walk() {
  11.                                 System.out.println("我會走路");
  12.                         }
  13.                           
  14.                 }; //匿名類別
  15.                 bird.name = "麻雀";
  16.                 bird.eat();
  17.                 bird.walk();
  18.         }
  19. }
複製代碼

TOP

  1. package bbs.istak.org.tw;

  2. public class Main {

  3.         public static void main(String[] args) {
  4.                 Bird bird = new Bird()
  5.                 {

  6.                         @Override
  7.                         public void Eat() {
  8.                                 // TODO 自動產生的方法 Stub
  9.                                 System.out.println("我會吃飯");
  10.                         }

  11.                         @Override
  12.                         public void Walk() {
  13.                                 // TODO 自動產生的方法 Stub
  14.                                 System.out.println("我會走路");
  15.                         }
  16.                        
  17.                 };
  18.                
  19.                
  20.                
  21.                
  22.                 bird.Eat();
  23.                 bird.Walk();

  24.         }

  25. }
複製代碼

TOP

返回列表