王彪20162321 2016-2017-2 《程序設計與數據結構》第6周學習總結
教材學習內容總結
-1.關鍵概念
- 1.繼承是從已有類派生一個新類的過程.
- 2.繼承的目的之一是復用已有的軟件.
- 3.繼承在父類和子類之間建立了 is-a 關系.
- 4.保護可見性提供了繼承之間最恰當的封裝機制.
- 5.可以使用super引用來調用父類的構造方法.
- 6.子類可以重寫(重定義)繼承自父類的方法.
- 7.一個類的子類可以是一個或多個其他類的父類,這樣形成了類層次.
- 8.公共特性應該放到類層次中盡可能高的位置上.
- 9.Java的所有類都直接或間接地派生於Object類.
- 10.Java程序中的每個類都繼承類toString和equals方法.
- 11.抽象類不能實例化,它提供的概念可由其他類來定義.
- 12.派類於抽象父類的類必須重寫父類中所有的抽象方法,否則派生的類認為抽象類.
- 13.私有成員也被子類繼承,但不能通過名字直接引用。不過可以間接引用它們.
- 14.final修飾符可以用來限制繼承.
-2.重點總結
- 1.構造方法不能繼承.
- 2.抽象類不能生成對象
- 3.如果一個類有抽象函數,那么它一定為抽象類.
- 4.沒有抽象函數也可以定義為抽象類.
- 5.在子類的構造函數當中,必須調用父類的構造函數.
教材學習中的問題和解決過程
- 問題1:在書上的程序中的某些代碼不清楚作用.
public class Book
{protected int pages = 1500;
public void setPages (int numPages)
{pages = numPages;}
public int getPages (){
return pages;}
}
程序中有一段代碼
{pages = numPages;}
而在Words類實例化時並沒有調用此函數,翻閱書發現還有很多相似的程序,不明所以.
解決過程:和劉先潤同時遇到此問題當時都有點懵,任何問題都難不倒實踐對吧,我在Words.java程序中調用此函數,發現並沒有出現編譯錯誤,而且它更改了成員變量pages的值,頓覺大悟,一個書類,可以有很多種書,文學,科學等,而不同書有不同的頁數,這是很符合實際情況的,代碼中首先就給pages賦值1500,但實際情況中不可能每本書都是1500頁吧,所以設計此函數,反應過來后還挺簡單的,每段代碼都有它的可取之處。
-
問題2:理解 我們為了能在派生類中引用而聲名一個公有變量,那么這就違背了封裝的原則.
解決過程:
1.關於封裝:一個對象應該是自管理的,即對象的實例數據應該僅由該對象來修改.
封裝提供了一個有效的途徑來保護數據不被意外的破壞。
相比我們將數據(用域來實現)在程序中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。
2.關於保留字public :公有變量與封裝的原則相悖,它允許定義數據的類之外的代碼訪問或修改數據的值.
3.繼承,封裝,多態,java封裝的概念,理解封裝 -
問題3:重載與重寫
解決過程:
1.重載:在Java中可以讓多個方法使用相同的方法名但帶有不同的參數列表.
2.重寫:當子類中定義的方法與父類中定義的方法有相同的名字和簽名時,我們說子類重寫了父類中的方法.
3.Java的重寫和重載機制
代碼調試中的問題和解決過程
- 問題1:程序8.11中的問題
public class FoodItem
{
final private int CALORIES_PER_GRAM=9;
private int fatGrams;
protected int servings;
...
}
變量fatGrams為私有變量,所以他只能在所定義的類中使用,但是
public class Pizza extends FoodItem
{
public Pizza (int fatGrams)
{
super (fatGrams,8);
}
}
而在子類Pizza中就引用了這個變量,頓覺不明
- 解決過程:並沒有搞清楚,個人認為這兩個fatGrams應該表示兩個不同的量吧
代碼托管
結對及互評
這周主要是在幫助相互理解封裝的概念,結對項目還在改進,因為要拿T-shirt衫是吧
其他(感悟、思考等,可選)
這周內容不是很多,但重在理解,分享發一些好地方
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第五周 | 200/1500 | 6/11 | 97/120 | |
第六周 | 200/1700 | 7/11 | 110/120 | |
第七周 | 000/0000 | 0/13 | 00/120 |
嘗試一下記錄「計划學習時間」和「實際學習時間」,到期末看看能不能改進自己的計划能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
-
計划學習時間:XX小時
-
實際學習時間:XX小時
-
改進情況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)