學號20162320 《程序設計與數據結構》第7周學習總結
教材學習內容總結
- Java實現多態有三個必要條件:繼承、重寫、向上轉型
- 實現建立多態引用的兩種方法:繼承和接口
- 後綁定,多態引用是一個在不一樣時刻能夠指向不一樣類型對象的引用變量,它在運行時纔將方法調用與它的定義綁定在一塊兒(在不少狀況下方法調用與定義綁定都是在編譯時完成),這個延遲的提交叫作後綁定或動態綁定。
- 當用某個類名聲明一個引用變量時,能夠用它指向這個類的任意對象,包括聲明繼承與它的任意類的任何對象。例如,若是Student類繼承於Person類,則
Person p1 = new Student();
- 接口,表示一組公共的抽象方法,經過這些方法能夠與一個對象進行交互,而且不能被實例化。接口使用
interface
來定義。注:一個類能夠實現多個接口,例如class A implements C, D, E
,接口中的方法都是public權限
- 接口層次,繼承也能夠用於接口,就是從一個接口能夠從另外一個接口派生而來。經過教材理解,接口的繼承和類的繼承同樣,子接口繼承父接口的全部抽象方法和常量
- 經過接口實現多態,接口名字可用來聲明對象引用變量,接口引用能夠指向實現這個接口的任意類的對象
- 軟件包的使用,例如我在文件夾chapter9作的一個類就能夠用
package chapter9
,將其放入chapter9的文件夾中,在IDEA中系統自動幫咱們省略了這個步驟。可是在虛擬機中作時,編譯時須要使用-d
參數,該參數的做用是依照報名生成相應的文件夾
- 包名的命名規範:1.要求包名全部字母小寫 2.包名通常狀況下,是你的域名要倒過來寫 3.一個類的全名應該是
包名 + .+ 類名
- Java中的訪問權限,1.public(公共權限)能夠修飾類、成員變量和成員函數 2.private(私有權限)能夠修飾成員變量和成員函數,只能在本類當中使用 3.default(包級別訪問權限)不寫權限修飾符,就是default權限,能夠修飾類、成員變量和成員函數 4.protected(受保護權限)
教材學習中的問題和解決過程
- 問題1:爲何教材上的Firm類的例子中的StaffMember類要聲明爲抽象類,感受不必。
解決方案:個人理解是,聲明抽象類的意義是限定不能讓它實例化,StaffMember是做爲繼承中的佔位符來輔助多態的對象的。
- 問題2:類和接口有什麼區別,第一次學發現兩個的內容基本相同,又有繼承的功能,感受有些混淆。
解決方案:經過仔細揣摩教材上的知識,發現了惟一的一點區別,就是類可被實例化,而接口是抽象的不能被實例化。這難道就是兩者惟一的不一樣嗎,還有沒有其餘的不一樣呢,暫時還未想出答案。
代碼調試中的問題和解決過程
- 問題1:
圖中(char)(message.length();
將一個字符強制轉化爲char類型到底會變成什麼?
解決方案:首先翻閱之前的教材,發現並無相關解釋,只有強制轉化爲int的示例。沒辦法,只好將Secret類改編一下,我把原程序中加減shift給去掉了,防止出現隨機數,令我驚奇的是打印出的結果居然是如圖
因此說char對於字符的強制轉化基本是不變的,這就很奇怪了,爲何要這麼作呢。
- 問題2:
Printer printer= null
是什麼意思。
解決方案:經過研究示例,發現這至關於聲明瞭一個接口類型的引用,可是爲何不用implement來呢,待解決。
![](http://static.javashuo.com/static/loading.gif)
(statistics.sh腳本的運行結果截圖)html
上週考試錯題總結
- 錯題1:A(n) ________________ is a step-by-step process for solving a problem(___是爲了解決問題而進行的一步步的處理過程) 答案:algorithm(算法)
解決方案:我選的是UML類圖,我覺得UML類的定義就是反映的過程。其實徹底不是,算法是解決問題的一步一步的方法,而UML圖是直觀地表示類和對象交互的方式。聚合對象是部分由其餘對象組成的對象。類能夠被看做是一組對象的藍圖。
- 錯題2:A return statement is not required at the end of every method(在方法的結尾,返回語句不是必需的).(正確)
解決方案:我是根據我之前作的代碼來判斷的,想起了大部分語句都有return就直接選了錯誤答案。構造函數或任何用返回類型無效聲明的方法都不須要返回語句。
- 錯題3:The ________________ reference always refers to the currently executing object(___引用老是指向當前正運行的對象).(this)
解決方案:我選的是static,this引用老是引用當前執行的對象。空引用是指不指向任何對象的引用。其餘三個選擇都不在java特別參考。
結對及互評
點評過的同窗博客和代碼
其餘(感悟、思考等,可選)
學了這麼多,實際操做編寫類這個坎卻遲遲過不去,如今連教材的課後練習都很吃力了,但願老師出個PP系列的解析參考一下。
還有就是發現了一個很好的java輔助學習網站java
學習進度條
目標 |
5000行 |
30篇 |
400小時 |
|
第一週 |
180/180 |
1/4 |
15/15 |
|
第二週 |
465/645 |
1/5 |
18/33 |
學習了scanner |
第三週 |
456/1101 |
1/6 |
17/ 50 |
學會了如何編寫數學公式等 |
第四周 |
620/1734 |
2/8 |
40/90 |
學了條件循環和數組 |
第五週 |
890/2604 |
1/9 |
25/115 |
接近學會了編寫類 |
第六週 |
462/3068 |
1/10 |
30/145 |
瞭解了繼承的概念 |
第七週 |
860/3928 |
2/12 |
41/186 |
鞏固以往知識 |
第八週 |
|
1/13 |
|
|
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。git
參考:軟件工程軟件的估計爲何這麼難,軟件工程 估計方法算法
- 計劃學習時間:30 小時
- 實際學習時間:41 小時
(有空多看看現代軟件工程 課件 軟件工程師能力自我評價表)數組
參考資料