把80G移動(dòng)硬盤(pán)拆開(kāi)裝到了筆記本里,把筆記本原有的40G硬盤(pán)又做成了移動(dòng)硬盤(pán),爽,筆記本空間大了一倍,終于可以分個(gè)15G給Feroda了。
Chapter 9 Abstract Classes and Interfaces
1. 接口的實(shí)現(xiàn) (implementing interfaces)
public class XXX [extends XXX] implements XXX[, XXX, XXX, ...]
然后具體地實(shí)現(xiàn)接口中的抽象方法。
2. 接口和抽象類
接口中的數(shù)據(jù)必須都是常量,抽象類則可任意;
接口中的方法僅含有一個(gè)簽名(signature),抽象類可以有具體的方法。
由于接口中所有的數(shù)據(jù)都是final static,方法都是public abstract,因此修飾符均被省略。
public interface T1 {
int k = 1;
void p();
}
類和接口都可以繼承多個(gè)接口,但接口不能繼承類
和抽象類一樣,盡管接口不能被構(gòu)造,但仍然可以作為數(shù)據(jù)類型用,并被造型(cast)為它的子類(子接口)。
決定究竟使用類還是接口,要根據(jù)關(guān)系判斷是 strong is-a 還是 is-kind-of。類用在有明確的繼承關(guān)系的父子類上,如公司職員和人;接口多用于wesk-is-a關(guān)系,或者說(shuō)is-kind-of關(guān)系,即對(duì)象僅僅擁有某個(gè)特性,比如String類可以比較大小,因此繼承了Comparable接口。
容易發(fā)現(xiàn),類名都是名詞,而接口則為名詞或形容詞。
3. 標(biāo)記接口 marker interface
不包含數(shù)據(jù)或方法的接口稱為標(biāo)記接口,一般用來(lái)標(biāo)記具有某種特性的類。
如 java.lang.Cloneable
public interface Cloneable {
}
用來(lái)標(biāo)記這個(gè)類能不能使用clone()方法被復(fù)制
關(guān)于clone()方法,它僅僅復(fù)制調(diào)用對(duì)象的淺層內(nèi)容(shallow copy),如果調(diào)用對(duì)象中存在某個(gè)類的變量,它僅僅復(fù)制了這個(gè)變量的reference。
如果一個(gè)類想擁有clone()方法,就必須在聲明的時(shí)候加入implement java.lang.Cloneable(否則會(huì)產(chǎn)生 CloneNotSupportedException),并必須重載clone()方法(否則會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤,因?yàn)閖ava.lang.Object中的clone()是protected的),或者直接使用super.clone()
4. wrapper class --把基本類型當(dāng)作類操作
類名大多是原類型首字母大寫(xiě),除int - Integer,char - Character以外。
(1)構(gòu)造方法舉例
public Integer(int value)
public Integer(String s)
(2)常量舉例
Float.MIN_VALUE
Double.MAX_VALUE
(3)類型轉(zhuǎn)換用法舉例
long l = doubleObject.longValue(); //自動(dòng)去小數(shù)
String s = doubleObject.toString();
(4)valueOf(static) 用法舉例
Double doubleObject = Double.valueOf("12.4");
(5)字符串轉(zhuǎn)化為數(shù)舉例
Integer.parseInt("11", 2) 返回 3 (二進(jìn)制)
Integer.parseInt("1A", 16) 返回 26
(6)Arrays.sort 方法
僅能用于元素類型相同且都implement Comparable的情況
(7)If a is a subclass of B, every instance of A[] is an instance of B[]. Therefore, the following statement is true:
new GregorainCalendar[10] instanceof Calendar[]
(8)類和基礎(chǔ)類型的自動(dòng)轉(zhuǎn)換 (JDK 1.5 Feature)
Integer[] intArray = {1, 2, 3}; //自動(dòng)把基礎(chǔ)類型轉(zhuǎn)為類,稱為boxing
System.out.println(intArray[0] + intArray[1] + intArray[2]); //輸出6,自動(dòng)把類轉(zhuǎn)為基礎(chǔ)類型,稱為unboxing