自測題:
1. 解釋抽象和抽象數據類型的概念。P333
抽象的概念是僅僅關注對象可以完成什么工作,而不必擔心如何完成工作的細節。
類模板通常被稱為抽象數據類型。因為這類數據暴露給用戶的所有信息僅僅是方法的描述(輸入、輸出和行為)和數據的相關信息(屬性)。
2. 動態(運行時)綁定和靜態(編譯時)綁定的區別。P335
編譯時綁定(compile-time binding)或靜態綁定(static binding)技術:
當一個類的代碼被編譯后,該類的每個方法的代碼都會隨之編譯;編譯器將確保該類的對象接收一個調用其方法的消息時,
程序都會跳轉到該方法的代碼的存儲位置--該方法的指令將會被執行,之后程序將返回最初的位置。
運行時綁定(run-time binding)或動態綁定(dynamic binding)技術:
每次創建一個新的對象時,必須記錄其方法存儲位置的信息;這樣對于調用哪個方法的決定可以推遲到運行時決定。
3.
a) 解釋Java中接口和適配器的區別。
接口:(P336)是一個類的所有方法都聲明為抽象方法。因此實現接口時必須為該接口的所有方法編碼。
適配器:(adapter,P348)是一個特殊的類,實現了接口的所有方法,扮演類與接口之間的中介角色,繼承適配器類就不必為所有的方法編碼。
b)
public interface SomeInterface{
public void method1();
public int method2();
}
public SomeAdapter extends SomeInterface{
public void method1(){ }
pupblic int method2(){ }
}
4. 解釋內部類的作用,描述內部類的使用方法。P349
在Java中一個類只允許繼承一個超類,不能繼承多個超類(多繼承,multiple inheritance)。為了繼承業務類,又能夠使用適配器類,可以借助內部類來實現。
即在其他類的內部創建一個類,這個內部類繼承適配器類。這個內部類不能為程序中其他類服務,從而實現更好地封裝。
5. 第7章的Oblong類的toString方法。
public String toString(){
return "Length:"+length+",\t"+"Height:"+height;
}
編程練習:
代碼附件1. RedCircle.java
2.
a) Checkable.java
b) BankAccount.java
c) RunAccount.java
d) Oblong.java OblongTester.java
注:length和heigth屬性本身就定義為double,為何還要整數呢?所以我只考慮了非負的問題。
3. DrawRectangle.java DrawRectangleWithAdapter.java
RunDrawRectangle.java RanDrawRectangleWithAdapter.java
4. SomeGraphicsClass.java // 這個類為了給第5題服務,部分代碼修改了,有些專屬部分放在子類中定義。
Question4.java
5. Question5.java