20162320劉先潤第7周學習總結

學號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來呢,待解決。

代碼託管


(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 小時

(有空多看看現代軟件工程 課件 軟件工程師能力自我評價表)數組

參考資料

相關文章
相關標籤/搜索