程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java關鍵字之abstract淺析

Java關鍵字之abstract淺析

編輯:關於JAVA

abstract:

  修飾符號,聲明抽象方法和抽象類。聲明方法時表示該方法只有特征簽名,沒有具體實現。而是把具體實現留給繼承該類的子類,並且抽象類不能直接用new來實例化對象即使有公共的構造函數。

  1,abstract修飾類,會使這個類成為一個抽象類,這個類將不能生成對象實例,但可以做為對象變量聲明的類型,也就是編譯時類型,抽象類就像當於一類的半成品,需要子類繼承並覆蓋其中的抽象方法。

  2,abstract修飾方法,會使這個方法變成抽象方法,也就是只有聲明(定義)而沒有實現,實現部分以";"代替。需要子類繼承實現(覆蓋)。

  abstract和interface:

  基本用法:

  abstract可以有自己的數據成員,也可以有非abstract的成員方法。

  interface只能有static final的數據成員(一般不定義數據成員),不允許有非abstract成員方法。

  高級用法:

  abstract class是一個類,抽象的而已,不能被實例化,用於子類繼承,表示“is-a”的關系。關鍵字extends,Java中只能是單繼承。子類繼承時,可以不全部覆蓋父類的abstract方法,這是子類任然是一個abstract class。

  interface是接口,沒有類的概念,是一份“大家”都遵守的契約,用於實現接口,表示“like-a”的關系。關鍵字implements,可以實現多個接口。實現接口時,必須覆蓋接口的所有方法。

  例子:(門和報警門)

  抽象類 門

  abstract class Door {

  abstract void open ();

  abstract void close ();

  }(並不是所有的門都有“報警”功能,但是所有的門都有“開”和“關”的功能)

  接口 報警功能

  interface Alarm {

  void alarm();

  }

  有報警功能的門

  class AlarmDoor extends Door implements Alarm {

  void open() {...}

  void close() {...}

  void alarm() {...}

  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved