20172325 2017-2018-2 《Java程序設計》第八周學習總結
阿新 • • 發佈:2018-05-02
照片 資料 總結 指向 cep 選擇 但是 接口實現 mod
20172325 2017-2018-2 《Java程序設計》第八周學習總結
教材學習內容總結
1.關於綁定
- 綁定:在執行程序時產生一個請求事件,需要執行一段代碼來來完成方法調用,即一個方法調用與一個方法定義的綁定。
- 後綁定:後綁定就是延遲綁定的情況。(後綁定的效率低於編譯階段的綁定效率)
2.由繼承實現多態性
- 一個引用變量可以指向由繼承關系的任何類的任何對象;
- 實際將調用的方法版本取決於對象的類型而不是引用變量的類型;
3.利用接口實現多態性
- 接口引用變量可以指向實現該接口的任何類的任何對象。
- 使用接口引用變量時,只能調用定義在接口中的方法,其他的不可調用,如果已知這樣的方法調用是有意義的,則需要進行對象類型轉換
- 接口名也可以用作方法參數的類型,使得任何實現同一個接口的類對象都可以作為參數傳給的方法。
4.排序
- 排序有兩種方法,分別為選擇性排序和插入性排序
- 選擇性排序:掃描整個數列找到最小值並與數列中第一個位置的值交換,如此循環,直到數列有序排列。
- 插入法排序:從左往右第一次排序從第二個數開始,與之前的數比較,在之前的數中合適的位置插入不斷重復。
- 比較:兩者的效率相同,但是選擇法排序的實際交換次數比插入法排序少,所以在兩者之間選擇的話,選擇法排序會更好一些。
5.搜索
- 線性搜索:從一個端點開始,以線性方式掃描整個搜索池,就是按照先後順序依次進行搜索,傳統意義上的依次搜索。
- 二分搜索:對一組已經進行過排序的數據進行二分搜索,從中間分開,依次尋找更接近目標的區間,最後達到搜索目標。
- 比較:
(1)二分搜索的前提是數據已經經過了排序,如果沒有進行排序,則考慮選擇線性搜索。
(2)在滿足二分搜索的前提下,如果數據量較大,則二分搜索需要的時間可能會較少,即效率更高。
(3)在數據已經排序(升或降)的基礎下,二分效率更高;在以數組形式出現時,線性效率更高。
教材學習中的問題和解決過程
- 問題1:實際調用的方法版本取決於對象的類型而不是引用變量的類型。此話什麽意思?
- 問題1解決方案:詢問了學長,並且具體的做了如下的一個實驗,能夠較為清楚的解釋這句話。
···
public class Polymorphism {
public static void main(String[] args) {
//既然是多態,java 中重載和重寫都是多態的體現,你問的這句話肯定不屬於重載則用重寫來解釋
// 這裏聲明了一把槍,變量為gun,但他卻指向了一把Ak47對象,也就是說 gun雖然是Gun的引用,但實際是一個Ak47對象
//那麽gun.shot其實調用的是Ak47.shot 而不是Gun自己的shot
Gun gun = new Ak47();
gun.shot();
}
}
class Gun {
public void shot() {
System.out.println("突!");
}
}
class Ak47 extends Gun {
public void shot() {
System.out.println("突!突!突!突!突!");
}
···} - 問題2:對接口實現多態性那一部分理解的不是很好
- 問題2解決方案:尋找資料的時候發現了這樣一個問答,雖然說沒有具體指導問題中的代碼,但是根據他們的問答確實很好的幫助了我理解接口實現多態性。
上圖問題的連接
代碼調試中的問題和解決過程
- 問題1:XXXXXX
- 問題1解決方案:XXXXXX
- 問題2:XXXXXX
- 問題2解決方案:XXXXXX
- ...
代碼托管
腳本截圖
上周考試錯題總結
- Inheritance through an extended (derived) class supports which of the following concepts?
A . interfaces
B . modulary
C . information hiding
D . code reuse
E . correctness
解析 通過擴展一個類並繼承它,新類不必重新實現任何這些繼承的方法或實例數據,從而節省了程序員的工作量。 因此,代碼重用是為了您的需要擴展它而重用其他代碼的好處。
- Inheritance through an extended (derived) class supports which of the following concepts?
- 2 . A variable declared to be of one class can later reference an extended class of that class. This variable is known as
A . protected
B . derivable
C . cloneable
D . polymorphic
E . none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class
解析:多態意味著變量可以有多種形式。 在普通情況下,Java被強烈定義,即一旦聲明為某個類型的變量永遠不會變為不同的類型。 這是一個例外,多態變量可以是任何類型的派生類(盡管不是同時,變量可以從一種類型變為另一種類型)。
原因:未能正確理解題意,以為是要在變量前什麽類型。 - Which of the following is an example of multiple inheritance?
A . A computer can be a mainframe or a PC
B . A PC can be a desktop or a laptop
C . A laptop is both a PC and a portable device
D . A portable device is a lightweight device
E . Macintosh and IBM PC are both types of PCs
解析:多重繼承意味著一個給定的類繼承了多個父類。在上面列出的那些中,筆記本電腦繼承了來自PC和便攜式設備的特性。A,B和E中的答案都是單個繼承的例子,其中一個班級至少有兩個孩子(在A中,計算機有兒童大型機和PC,B,PC有兒童臺式機和筆記本電腦,E,PC有孩子Macintosh和IBM PC)。答案D表示一個類的屬性。
- Which of the following is an example of multiple inheritance?
In order to determine the type that a polymorphic variable refers to, the decision is made
A . by the programmer at the time the program is written
B . by the compiler at compile time
C . by the operating system when the program is loaded into memory
D . by the Java run-time environment at run time
E . by the user at run time
解析:這道題目是在問是在什麽階段確定多態變量所引用的類型,這也是屬於第十章內容。對於多數情況下的這種請求,這種綁定是發生在編譯階段,但是對於多態性引用,這種綁定要延遲到程序運行才能執行,並且要綁定的方法取決於當時引用變量所引用的對象,這種被延遲的請求事件被稱為後綁定或動態綁定。結對及互評
點評模板:
- 博客中值得學習的或問題:
- xxx
- xxx
- ...
- 代碼中值得學習的或問題:
- xxx
- xxx
- ...
基於評分標準,我給本博客打分:XX分。得分情況如下:xxx
參考示例
點評過的同學博客和代碼
- 本周結對學習情況
- 結對同學學號1
- 結對照片
- 結對學習內容
- XXXX
- XXXX
- ...
上周博客互評情況(只要鏈接,具體點評放相應博客下)
- 學號1
## 學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
參考資料
Java學習筆記(第8版)
- 《Java學習筆記(第8版)》學習指導
...
20172325 2017-2018-2 《Java程序設計》第八周學習總結