《Java程序設計》 第四周學習總結

學號 20175313 《Java程序設計》第四周學習總結

教材學習內容總結

第五章主要內容html

  • 瞭解子類的繼承性git

    • 子類和父類在同一包中的繼承性(除private外其他都繼承)
    • 子類和父類不在同一包中的繼承性(只繼承public和protected)
  • 掌握成員變量的隱藏和方法重寫編程

    • 成員變量的隱藏:注意與this的區別。
      • 用關鍵字super對其進行操做。
      • 經過調用從父類繼承的方法對其進行操做。
    • 方法重寫:注意與方法重載的區別。
      • 語法規則:這個方法的名字、參數個數、參數類型和父類的方法要徹底相同,可是方法的類型能夠是父類方法類型的子類。
      • 重寫目的:經過方法重寫能夠隱藏繼承的方法,或是把父類的狀態和行爲改變成自身的狀態和行爲。
  • 理解何爲多態性以及如何產生多態微信

    • 所謂多態就是指父類的某個方法被其子類重寫時,能夠各自產生本身的功能的行爲。(後面的abstract會用到)
    • 將子類建立的對象的引用放到一個父類的對象中,就獲得了該對象的一個上轉型對象,那麼這個上轉型對象在調用這個方法時就可能具備多種形態。
  • 熟悉abstract的使用以及相關規則學習

    • 對於abstract方法,只容許聲明,沒有方法體。
    • 不容許用final和static修飾abstract類或方法。
    • abstract類不能用new運算符建立對象。但該對象能夠成爲其子類對象的上轉型對象調用子類重寫的方法。
  • 學會面向抽象編程測試

    • 目的:應對用戶需求的變化。
    • 核心:讓類中的每種可能的變化對應地交給抽象類的子類去負責。

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

  • 問題1:不太明白該代碼編譯不經過的緣由。

輸入圖片說明 輸入圖片說明

  • 問題1解決方案:經過查閱課本並對上方問題進行深刻剖析,最終理解的該代碼出錯的緣由。
  • 理解狀況:super必須是子類構造方法的頭一條語句,該代碼中子類B的頭一條語句中並無出現super,則默認super(),所以當父類中定義多個構造方法是,應當包括一個不帶參數的構造方法,而A中未曾出現,所以出現了編譯失敗,若在A類中加上一個無參數的構造方法,則結果應該爲2。
  • 運行結果截圖:

輸入圖片說明 輸入圖片說明

  • 問題2:對於子類的上轉型對象可否調用子類重寫的靜態方法,不是很清楚。

輸入圖片說明 輸入圖片說明 輸入圖片說明

  • 問題2解決方案:上機運行改程序,查看結果。
  • 運行結果截圖:

輸入圖片說明

  • 結果代表:若是子類重寫了父類的靜態方法,那麼子類對象的上轉型對象不能調用子類重寫的靜態方法,只能調用父類的靜態方法。

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

  • 問題:運行結果與教材上所給的不相符(教材133頁例題)。

輸入圖片說明 解決方案:經過調試發現bottom能夠成功的做爲Geometry子類的上轉型對象,可是height的值始終爲0; 後來發現是在Pillar類中少寫了一句關於對height的操做。 調試過程截圖: 輸入圖片說明this

輸入圖片說明

輸入圖片說明

輸入圖片說明

輸入圖片說明

代碼託管

(https://gitee.com/xiannvyeye/test)spa

輸入圖片說明 輸入圖片說明

這週考試錯題總結

  • 錯題1

輸入圖片說明 正確答案:A
我選擇的是:B設計

  • 錯誤緣由:不太清楚,我仍是認爲個人答案是正確的。
  • 理解狀況:
    • instanceof的使用方法:instanceof運算符左面的操做元是對象,右面是操做元是類,當左面的操做元是右面的類或其子類所建立的對象時,instanceof運算的結果是true,不然是false。
    • 個人理解:
      1. 依照此定義,若一個實例對象是其子類所建立的對象,那麼instanceof的值爲true,可是它不是右邊操做元的對象;
      2. 若一個實例對象是instanceof右邊操做元所建立的,那麼instanceof的值仍然爲true,而它不是右邊操做元的對象。
      3. 因此我認爲沒法經過instanceof的結果來判斷實例對象是否屬於一個類。
  • 錯題2

輸入圖片說明 正確答案:ABCD
個人答案:CD3d

  • 錯誤緣由:對final這個關鍵字的使用理解的不夠透徹,沒有全面的看待它,只看到一些片面之處。
  • 理解狀況:經過查看資料final類以及String類是否能夠被繼承,已經可以明白這道題了。

心得體會

  • 這周剛成立結對小夥伴,咱們暫時尚未開始一塊兒學習,因此我在打代碼的過程當中出現了許多粗心的地方,致使我浪費的不少時間去調試,找Bug,我以爲咱們結對以後這種事情的發生率必定會大幅度下降。
  • 第五章的內容較少,正是由於內容少,反而使我懈怠,週四纔開始看,因此不少內容都是大體看一下,致使課後習題、測試題頻繁因爲概念問題出現錯誤。因此我以爲必定要合理分配時間。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 13/13 1/1 23/23
第二週 317/330 1/6 22/45
第三週 703/1044 1/7 31/76
第四周 1263/2094 2/9 18/84

參考資料

相關文章
相關標籤/搜索