【正文】
個(gè)接口。 ? 語法 [modifier] interface interfaceName [extends interfaceNameList] { declaration* } ? 如果接口聲明中提供了 extends子句那么該接口就繼承了父接口的成員類型、方法和常量。這些接口稱為聲明接口的直接父接口。 ? 任何實(shí)現(xiàn)該接口的類,必須實(shí)現(xiàn)該接口繼承的其他接口。 接口和抽象類的比較 接口 抽象類 多重繼承 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口 一個(gè)類只能擴(kuò)展一個(gè)抽象類 方法 接口不能提供任何代碼 抽象類可以提供完整代碼、缺省代碼以及用于覆蓋的存根。 數(shù)據(jù)字段 只包含 public static final常量,常量必須在聲明時(shí)初始化。 可以包含實(shí)例變量和靜態(tài)變量。靜態(tài)和實(shí)例初始化代碼可用于常量計(jì)算。 現(xiàn)有類 任何現(xiàn)有的類都可以添加一個(gè)接口的實(shí)現(xiàn) 現(xiàn)有類必須重寫,只從抽象類派生 含義 接口通常用于描述一個(gè)類的外圍能力,而不是核心特征,例如 Automobile類可以實(shí)現(xiàn) Recyclable接口,而 Recyclables可以應(yīng)用于其他不相關(guān)的對(duì)象。類與接口之間的是 able或者 can do的關(guān)系。 抽象類定義了它的后代的核心特征。例如 Person類包含了 Student類的核心特征。派生類與抽象類之間是 isa的關(guān)系。 適用性 所有的實(shí)現(xiàn)只是共享方法簽名 所有實(shí)現(xiàn)大同小異,并且共享狀態(tài)和行為 簡(jiǎn)潔性 接口中的常量都被假定為 public static final,可以省略。不能調(diào)用任何方法計(jì)算這些常量的初始值。接口中的方法被假定為 public abstract。 可以在抽象類中放置共享代碼。可以使用方法來計(jì)算實(shí)例和靜態(tài)變量(常量)的初始值。必須用abstract顯式聲明方法為抽象方法。 添加功能 如果為接口添加一個(gè)新的方法,則必須查找所有實(shí)現(xiàn)該接口的類,并為他們逐一提供該方法的實(shí)現(xiàn)。 如果為抽象類提供一個(gè)方法,可以選擇提供一個(gè)缺省的實(shí)現(xiàn),那么所有已存在的代碼不需要修改就可以繼續(xù)工作。 基本數(shù)據(jù)類型的包裝類 ? 作用 ? 為基本數(shù)據(jù)類型提供方法和常量值 ? 用于只能處理對(duì)象引用的地方 ? 包裝類的對(duì)象的值是不變的 Number Byte Short Integer Long Float Double Character Boolean Object Comparable 構(gòu)造函數(shù)與通用方法 ? 構(gòu)造函數(shù) ? 以一個(gè)對(duì)應(yīng)的基本數(shù)據(jù)類型為參數(shù) ? 以字符串為參數(shù) (除了 Character) ? 通用方法 public static Type valueOf(String str) public String toString() public type typeValue() public int pareTo(Type other) public int pareTo(Object obj) public boolean equals(Object obj) public int hashCode() Number ? 方法 public abstract int intValue() public abstract long longValue() public abstract float floatValue() public abstract double doubleValue() public byte byteValue() public short shortValue() 整數(shù)包裝類 ? Byte, Short, Integer, Long ? 方法 public static type parseType(String s) public static type parseType(String s, int radix) public static Type valueOf(String s, int radix) public static String toString(type val, int radix) public static String toHexString(type val) public static String toOctalString(type val) public static String toBinaryString(type val) 浮點(diǎn)包裝類 ? Float, Double ? 常量 POSITIVE_INFINITY NEGATIVE_INFINITY NAN ? 方法 public boolean isInfinite() public boolean isNaN() public static type parseType(String s) public static String toString(int i) 例 排序?qū)ο髷?shù)組 ? 編寫程序,對(duì) Comparable對(duì)象數(shù)組進(jìn)行排序。 Example: 基本類型與包裝類之間的自動(dòng)轉(zhuǎn)換 ? 。 ? 將基本類型的值轉(zhuǎn)換為包裝類對(duì)象,稱為裝箱 (boxing) ? 將包裝類對(duì)象轉(zhuǎn)換為基本類型的值,稱為開箱 (unboxing) Integer intObject = 2。 等價(jià)于 Integer intObject = new Integer(2)