Java抽象類別和介面

來源:互聯網
上載者:User

標籤:

抽象類別和介面一、抽象類別(abstract)

1.抽象類別

  Java可以定義一些不含方法體的方法,它的方法體交給該類的子類根據自己的情況去實現,這樣的方法就是抽象方法,包含抽象方法的類叫抽象類別。一個抽象類別中可以有一個或者多個抽象方法。

  抽象防範必須用abstract修飾符來定義,任何帶有抽象方法的類都必須聲明為抽象類別。

  (1)抽象類別定義規則

  a.抽象類別必須用abstract關鍵字來修飾,抽象方法也必須用abstract來修飾;

  b.抽象類別不能被執行個體化,也就是不能用new關鍵字去產生對象;

  c.抽象方法只需聲明,而不需要實現;

  d.含有抽象方法的類必須被聲明為抽象類別,抽象類別的子類必須覆蓋所有的抽象方法後才能被執行個體化,否則這個子類還是一個抽象類別。

2.抽象方法的寫法

abstract 傳回值類型 抽象方法(參數列表);

3.抽象類別和抽象方法的例子

1 abstract class Abs{2     abstract int aa(int x,int y);3 }

注意:含有抽象方法的類肯定是抽象類別,抽象類別中的某個抽象方法不一定是抽象的。

二、介面(interface)

1.介面

  如果一個抽象類別中的所有方法都是抽象的,就可以將這個類用另外一種方式來定義,也就是介面定義。介面是抽象方法和常量值的定義的集合,從本質上來講,介面是一種特殊的抽象類別,中抽象類別只包含常量和方法的定義,而沒有變數和方法的實現。

2.介面定義的例子

1 interface Runner{2     int ID = 1;3     void run();4 }

  在介面Runner的定義中,及時沒有顯式地將其中的成員用public關鍵字標識,但是這些成員都是public訪問類型的。介面裡的變數預設是用public static final 標識的,所以,介面中定義的就是全域變數。

  我們可以定義一個新的介面,用extends關鍵字去繼承一個已有的介面;也可以定義一個類,用implements關鍵字去實現一個介面中的所有方法;還可以去定義一個抽象類別,用implements關鍵字去實現一個介面中定義的部分方法。

 1 //定義一個介面 2 interface Runner{ 3     int ID = 1; 4     void run(); 5 } 6 //可以定義一個新的介面,用extends關鍵字去繼承一個已有的介面 7 interface Animal extends Runner{ 8     void breathe(); 9 }10 //可以定義一個類,用implements關鍵字去實現一個介面中的所有方法11 class Fish implements Animal{12     public void run() {13         System.out.println("fish is swimming");14     }15 16     public void breathe() {17         System.out.println("fish is bubbling");18     }19 }20 21 //可以去定義一個抽象類別,用implements關鍵字去實現一個介面中定義的部分方法。22 abstract class LandAnimal implements Animal{23     public void breathe(){24         System.out.println("LandAnimal is breathing");25     }26 }

  在Java中,設計介面的目的就是為了讓類不必受限於單一繼承的關係,而可以靈活地同時繼承一些共有的特性,從而達到多重繼承的目的,並且避免了C++中多重繼承的複雜關係所產生的問題。多重繼承的危險性在於一個類可能繼承了同一個方法的不同實現,對介面來講不會發生這種情況,因為介面沒有任何實現。

  一個類可以在繼承一個父類的同時,實現一個或多個介面,extends關鍵字必須位於implements關鍵字之前。如下:

1 class Student extends Person implements Runner{2     public Student(int age) {3         super(age);4     }5 6     public void run() {7         System.out.println("the student is running");8     }9 }

  一個類實現多個介面的例子:

1 class Bird implements Runner,Flyer{2     public void run() {3         System.out.println("the bird id running");4     }5     public void fly() {6         System.out.println("the bird is flying");7     }8 }

下面是介面中定義常量的執行個體:

1 public class TestDebug11 {2     public static void main(String[] args) {3         Fish fish = new Fish();4         int j = 0;5         j = Runner.ID;//格式:類.成員變數6         j = fish.ID;  //對象名.靜態成員7     }8 }

3.小結:

a.實現一個介面就是要實現該介面的所有方法(抽象類別除外);

b.介面中的方法都是抽象方法;

c.多個無關的類可以實現同一個介面,一個類可以實現多個無關的介面。

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.