1. 程式人生 > >王躍(Java學生)

王躍(Java學生)

  這是一些語法基礎知識,需要藉助於工具才能快速提高。能與不能,直接寫一個看看即可。

  看例子:
  public interface Humans{   }   如果我們手中沒有Humans的具體例項類,又要在程式中用到一個。比如測試啊什麼的!   Object obj=new Humans(){};   上面的語句是對的,其實不要認為介面能直接例項化了,注意後面還有"{}",這裡其實new出來的是一個Humans的實現類,而在java內部,是一個匿名內部類。   下面再看一個介面:   interface Animal
  {
  void eat();
  }   錯誤的形式(編譯都通不過的):
  Animal a=new Animal(){};   正確的形式:   Animal a=new Animal()
  {
     public void eat(){
     System.out.println("吃東西了!");
     }
  };   要直接在new後面跟介面名稱來例項化一個介面是不可能的,還必須保證介面名稱後面有完整的實現體。現在應該明白其實質了吧,我們new其實是操作在匿名內部類上的,不是用在介面本身上。介面本身是不能例項化的!   在一些框架(如EasyJWeb)中,經常使用匿名內部類的方式來寫回調實現,因為其語法比較簡潔,也不會建立一些多餘的沒有獨立能力的類。   當然,作為一般的應用肯定很少用,這需要藉助於開發工具。這些基礎問題他都會提示你,何時對,何時錯!

這也是一直以來困惑我的問題,現在有些明白了!