Java中接口與實例化


一.問題引入

        前兩天學代理模式的時候想到的,接口可不可以new呢?

        接口是特殊的抽象類,接口的方法都默認為  public  abstract  的。。。 抽象的方法不能new的哦,不能被實例化,為什么new ActionListener(){} 可以?不多說了,直接看資料。

二.若干資料

        Java不能同時繼承多個類,但是可以繼承多個接口;接口可以用來變相的繼承多個類;為什么new ActionListener(){} 可以這樣,接口可以被new嗎?new ActionListener(){} 這種形式,是要在{}中重寫接口中的方法。接口不能new ,不過可以生成一個匿名類,當然,匿名類不止實現接口這一種。省略了寫一個具體類實現ActionListener接口的開銷。

        接口不能直接new,但是它可以作為別的類的變量。如果有類實現了這個接口,則可以new! 舉一個簡單的例子:java.lang.List是一個接口,但是List<String> list=new ArrayList<String>();是沒有任何錯誤的,因為ArrayList實現了List接口。接口編程是為了實現多繼承,在java web中的spring框架下用到十分多。

三.簡單例子

實現匿名類。最簡單的線程類,可以這么寫。
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
});

-------------------------------------------------------------------------------------------------------------------------

class Test {
  int start=1;
  int end=100;
  public static void main(String[] args) {
     new Test().go();
  }
  
  void go() {
      Runnable a=new Runnable() {
         public void run() {
            for(int i=start;i<end;i++)
              System.out.println(i);
         }
      };
      Thread t=new Thread(a);
      t.start(); 
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM