1. 程式人生 > >第七周學習總結

第七周學習總結

towards num 托管 軟件復用 thead alpha uri sys mis

20172320 2017-2018-2 《Java程序設計》第七周學習總結

教材學習內容總結

1、繼承:繼承是支持軟件復用的途徑之一,比重寫類更快捷、更容易且成本低
2、繼承在父類和子類之間建立一種“是”關系,即子類是一種更具體的父類版本
3、可見性修飾符封裝性public<protected<private
4、super的引用可以調用父類的構造方法,super調用父類構造方法只能在子類中執行,且必須是第一行執行
5、Java的繼承方法為單繼承,不支持多繼承
6、Java存在類層次結構,即一個類的子類可以是一個或多個類的父類

教材學習中的問題和解決過程

  • 問題1:軟件復用是啥?
  • 問題1解決方案:書上說繼承是支持軟件復用的途徑之一
    ,並未介紹軟件復用是個啥。通過上網搜索了一篇介紹這個的博客了解到軟件復用是使用現有軟件組件實現或更新軟件系統的過程,它可以降低成本和開發時間,產生可靠的軟件,實現標準化,在不同應用中保持一致
  • 問題2:super和this的異同
  • 問題2解決方案:書上提到super類似this的引用,但從用法上我沒感受到有什麽相同的,書上也沒提出不同的地方,就上網搜了下
    技術分享圖片
  • 問題3:關於抽象類和抽象方法
  • 問題3解決方案:通過一篇博客,了解了抽象類和抽象方法的一些區別
    抽象方法:在類中沒有方法體的方法,就是抽象方法。 抽象類:含有抽象方法的類就叫抽象類。 抽象類中的抽象方法必須被實現! 如果一個子類沒有實現父類中的抽象方法,則子類也成為了一個抽象類! 抽象類中的普通方法,可以不必實現。 用abstract來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法。 抽象類不能被實例化。 抽象方法只需聲明,而不需實現某些功能含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。

代碼調試中的問題和解決過程

教材中代碼調試有問題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果別人沒有提出相同問題,可以編輯文檔添加,然後把自己提出的問題復制到下面:

  • 問題1:PP9.1的結果只顯示了硬幣面值之和,顯示不了拋擲結果
  • 問題1解決方案:一開始用數組這樣定義的
    技術分享圖片
    以為萬事大吉了,就沒管了。後來發現少了輸出,然後直接System.out了,還是不行。仔細對比了一下,發現自己沒用Coin中的方法來投擲,自然沒結果。因為我定義了一個數組,還不能X.flip(); X.isHead();, 一開始沒想到以為是哪定義錯了,看了一遍又一遍都沒發現有什麽問題。後來才想起這是個數組,需要制定其中的具體的一個才能用flip和isHead來投擲硬幣,就改成了這樣
    技術分享圖片

代碼托管

技術分享圖片
技術分享圖片

上周考試錯題總結

  • A Java main method uses the parameter (String[ ] variable) so that a user can run the program and supply "command-line" parameters. Since the parameter is a String array, however, the user does not have to supply any parameters.
    A .true
    B .false
    分析:main方法需要參數,以防程序員希望允許用戶提供命令行參數。在java命令之後,在命令行輸入的任何內容都將被接受為命令行參數。如果是由空格分隔的幾個單詞,那麽每個單詞都作為一個單獨的字符串數組元素存儲。例如,“java foo。class hi there“將在變量[0]和變量[1]中存儲“hi”,以供程序使用。
  • Just as arrays can only have a fixed number of elements, set at the time the array is declared, a parameter list also can only have a fixed number of elements, set at the time the method is declared.
    A .true
    B .false
    分析:參數的長度可改變,可變長度參數在定義時用...表示
  • So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It‘s only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.
    A .true
    B .false
    分析:ArrayList是作為數組實現的,只要其中一個只是訪問ArrayList的元素,效率與數組的效率是一樣的。但是,當對ArrayList的前部分進行插入或刪除時,就會發生大量的元素復制,從而降低其效率。
  • If x is a char, and values is an int array, then values[x]
    A .causes a syntax error
    B .causes an Exception to be thrown
    C .casts x as an int based on x‘s position in the alphabet (for instance, if x is ‘a‘ then it uses 0 and if x is ‘z‘ then it uses 25)
    D .casts x as an int based on x‘s ASCII value (for instance, if x is ‘a‘ then it uses 97 and if x is ‘z‘ then it uses 122)
    E .casts x as an int based on the digit that is stored in x (for instance, if x is ‘3‘ it uses 3) but throws an exception if x does not store a digit
    分析:數組索引必須是一個int值,所以如果x不是int,那麽通常值[x]會導致語法錯誤,但是Java編譯器會自動將x轉換為int,如果它可以被轉換的話。字符通過將char值轉換為等效的ASCII值來轉換為int類型。因此,如果x是‘a‘,它被轉換為int 97,因此值[x]訪問值[97]。

    結對及互評(20172327 馬瑞蕃)

  • 博客:還是很全的,背景很好看。
  • 代碼:問題解釋仍需全面

    學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 67/67 1/4 20/20
第二周 328/395 1/5 20/40
第三周 523/851 1/6 20/60
第四周 1070/1921 1/7 20/80
第五周 608/2529 1/8 10/90
第六周 608/2899 1/9 20/110
第七周 429/3328 1/10 20/130

參考資料

  • 《Java程序設計與數據結構教程(第八版)》
  • 藍墨雲班課
  • 《Java中this與super的區別》
  • 《軟件復用》

第七周學習總結