java介面和抽象類別

來源:互聯網
上載者:User

抽象類別:
1. 如果一個類中有一個或者多個抽象方法,那麼此類必須聲明為抽象類別,不能被執行個體化。

2. 如果從一個抽象類別繼承,並想建立該新類的對象,那麼就必須為基類中所有抽象方法提供方法定義。

   如果不這麼做,那麼倒出類也是抽象類別,並且編譯器會強制添加關鍵字abstract。

public abstract class AbstractClass             //裡面至少有一個抽象方法{  public int t;  //普通資料成員  public abstract void method1();   //抽象方法,抽象類別的子類在類中必須實現抽象類別中的抽象方法  public abstract void method2();  public void method3();   //非抽象方法  public int method4();  public int method4 (){        …… //抽象類別中可以賦予非抽象方法方法的預設行為,即方法的具體實現  }   public void method3(){        …… //抽象類別中可以賦予非抽象方法方法的預設行為,即方法的具體實現  } } 

介面:
1. 一旦實現了某個介面,其實就變成了一個常規的類,可以任意去擴充它。

2. 介面中沒有任何方法是聲明為public的,應為它們預設就是public的。

    在介面中聲明的屬性都預設是final和static的。

public interface Interface{  static final int i;  //介面中不能有普通資料成員,只能夠有靜態不能被修改的資料成員,static表示全域,final表示不可修改,可以不用static final 修飾,會隱式的聲明為static和final    public void method1();  //介面中的方法一定是抽象方法,所以不用abstract修飾    public void method2();  //介面中不能賦予方法的預設行為,即不能有方法的具體實現} 

 

總結:
      簡言之抽象類別是一種功能不全的類,介面只是一個抽象方法聲明和靜態不能被修改的資料的集合,兩者都不能被執行個體化。

      從某種意義上說,介面是一種特殊形式的抽象類別,在java語言中抽象類別表示的是一種繼承關係,一個類只能繼承繼承一個抽象類別,而一個類卻可以實現多個介面。在許多情況下,介面確實可以代替抽象類別,如果你不需要刻意表達屬性上的繼承的話。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.