20182331 2019-2020-5《數據結構與面向對象程序設計》第5周學習總結

20182331 2019-2020-1 《數據結構與面向對象程序設計》第1周學習總結

教材學習內容總結

  • 子類對父類的繼承extends
  • 繼承的目的之一是複用已有的軟件
  • 子類能夠重寫父類的方法
  • 繼承沒法使用構造方法,但super能夠。即在子類的構造方法中第一行使用super調用父類構造方法
  • 全部類都是從Object類繼承來的
  • Object類直接或間接派生全部類。其定義在java.lang中
  • 抽象類abstract
  • 用protect修飾父類的變量和方法
  • final能夠用來限制繼承

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

  • 問題1:接口類和抽象類
  • 問題1解決方案:1.接口類:常量+抽象方法。2.抽象類:常量/變量+抽象/非抽象方法。3.抽象類是用來捕捉子類的通用性的,它不能被實例化,只能用做子類的超類,抽象類是被用來建立繼承層級裏子類的模板。4.抽象類中的每個抽象方法都必須使用abstract修飾符,抽象方法不使用final和static修飾符。
  • 問題2: 什麼是權限修飾符,它有什麼做用,爲何須要它
  • 問題2解決方案:一個Java應用有不少類,可是有些類,並不但願被其餘類使用。每一個類中都有數據成員和方法成員,可是並非每一個數據和方法,都容許在其餘類中調用。如何能作到訪問控制呢?就須要使用訪問權限修飾符

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

  • 問題1:在作繼承這一章的課後題的時候,關於抽象方法一直搞不明白
  • 問題1解決方案:父類中有抽象方法的話,子類必須實現這個抽象方法,否則的話也是一個抽象類。若是父類中有構造方法。那麼子類中必須也有構造方法。
  • 問題2:在進行people繼承的編程中一直不能運行
  • 問題2解決方案:多打了一個花括號,結果致使找不到主類

代碼託管

上週考試錯題總結

  1. The instruction super( ); does which of the following?

A . calls the method super as defined in the current class
B . calls the method super as defined in the current class'parent class
C . calls the method super as defined in java.lang
D . calls the constructor as defined in the current class
E . calls the constructor as defined in the current class'parent classhtml

思考:instruction super表示對當前類的父類中某些內容的調用。由於除了super()以外沒有消息,因此它是對父類構造函數的調用。java

2.Inheritance through an extended (derived) class supports which of the following concepts?git

A . interfaces
B . modulary
C . information hiding
D . code reuse
E . correctness程序員

思考:經過擴展類並從中繼承,新類沒必要從新實現任何繼承的方法或實例數據,從而節省程序員的工做量。所以,代碼重用是指經過擴展別人的代碼以知足您的須要,從而爲您的利益重用別人的代碼的能力。編程

3.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數據結構

思考:多重繼承意味着給定的類繼承自多個父類。在上面列出的這些中,筆記本電腦繼承了我的電腦和便攜式設備的特性。A、B和E中的答案都是單個繼承的例子,其中一個類至少有兩個子類(在A中,計算機有子大型機和PC,在B中,PC有子臺式機和筆記本電腦,在E中,PC有子Macintosh和IBM PC)。答案d表示類的屬性。函數

4.If a programmer writes a class wanting it to be extended by another programmer, then this programmer must學習

A . change private methods and instance data to be protected
B . change public methods and instance data to be protected
C . change all methods to be protected
D . change the class to be protected
E . none of the above, the programmer does not have to change anythingthis

思考:受保護項可由定義它們的類的任何子類訪問,而私有項不能由任何其餘類訪問。所以,之前定義的私有項如今必須受到保護。之前定義的公共實體應該保持公共,以便全部其餘類仍然能夠訪問這些公共實體。之前定義的私有項不該該公開,由於這將容許全部類訪問它們,而不只僅是子類。

5.The relationship between a parent class and a child class is referred to as a(n) ________ relationship.

A . has-a
B . is-a
C . was-a
D . instance-of
E . alias

思考:術語「is-a」用於表示子類是父類的一種類型。例如,研究生就是一種類型的學生。子類是更具體的類型。has-a關係指的是類的屬性或元素(例如,學生有gpa),instance of指的是類與該類的實例化對象之間的關係。沒有一個WAS-A關係,一個別名錶示引用同一個對象或實例的兩個變量。

6.Why shouldn't an abstract method be declared final?

A . There's nothing wrong with doing so
B . Abstract methods cannot be overridden and they must be if a concrete class ever is to be instantiated
C . So long as the Abstract method never actually is used in by any other method, there's no problem with doing this
D . So long as the Abstract method is declared in a Class (not an Interface), there's nothing wrong with doing this
E . None of the above

思考:爲了使抽象方法成爲具體的,必須重寫它。將方法聲明爲final使其沒法重寫。這是一個矛盾,是被禁止的。

總結:其實我列舉出來的問題只是本週學習中的一些具備表明性,思考型的錯誤,一些關於基礎知識點的錯誤我根本就沒有羅列,知識點的錯漏仍是太大了。

結對及互評

  • 博客中值得學習的或問題:
    • 學習深入,本身有方法
    • 代碼中值得學習的或問題:
    • 使用繼承減小代碼的重複編寫
    • 基於評分標準,我給本博客打分:100分。得分狀況以下:
    • 正確使用Markdown語法(加1分)
    • 模板中的要素齊全(加1分)
    • 教材學習中的問題和解決過程, 一個問題加1分
    • 代碼調試中的問題和解決過程, 一個問題加1分
    • 排版精美的加一分
    • 代碼超過300行(加2分}
    • 代碼Commit Message規範的加1分
    • 有動手寫新代碼的加1分
    • 結對學習狀況真實可信的加1分

點評過的同窗博客和代碼

  • 本週結對學習狀況
  • 20182309
    • 結對學習內容
      • 創建局域網下服務器與客戶端的鏈接
      • 學習繼承關係
      • 解決代碼錯誤

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第五週 1588/2698 2/9 34/133

參考資料

相關文章
相關標籤/搜索