以下方**為例
sonaddclass p1 =
newsonaddclass(2
,3,5
);
classa}
public
bgetb()
else
return
null;}
}class
b}
沒有找到極其強烈無法辯駁的用繼承的原因的時候一律用組合
-組合體現為實現層面
-繼承主要體現在擴充套件方面
如果並不是需要乙個類的所有東西(包括介面和屬性),那麼就不需要用繼承,相反就用組合。
用繼承那就必須是所有的都繼承,不是所有的都繼承,那麼就是濫用繼承。
組合在編譯依賴和不同版本的執行時相容性上優於繼承;繼承在合理復用實現的潛力優於組合
繼承偏重集體,具有特殊性的集體(派生類)可以看作是一般性集體(基類)的一部分,如汽車對於交通工具。
組合偏重個體,某個功能物件被宿主物件看成自己的一部分,如輪子對於汽車。
與看待事物的角度有關,繼承偏抽象,組合偏具體。
**當中體現多型性,概括為一句話,父類引用指向子類物件。
//父類名稱 物件名 =new 子類名稱();
//介面名稱 物件名=new 實現類名稱();
//父類
package cn.itcast.day10.demo04;
public
classfu(
)//子類
package cn.itcast.day10.demo04;
public
classzi(
)package cn.itcast.day10.demo04;
public
class
demo01multi
}
instanceof用於判斷前面的物件是否是後面的類,或者其子類、實現類的例項。就是判斷乙個物件的宣告是否為該物件的例項引用。
如
a a=
newa()
那麼使用instanceof時為true或者
a a=
newb()
然後b是a的子類那麼結果為
false反過來為true
第六章作業
例題6.1 舉例說明了指標的幾種表示形式,p指向指標指向的變數,p指向該變數的儲存位址,例題6.1 指標的幾種形式 自動化1121 李慶典 include 預編譯處理命令 using namespace std 標準名字空間 int main q 0 cout string1 is cout 例題6...
第六章作業
6.12 要求 1 建立基類area cl的兩個派生類rectangle與isosceles,讓每乙個派生類都包含乙個函式area 分別用來返回矩形與三角形的面積。用建構函式對height與width進行初始化。2 寫出主程式,用來求height與width分別為10.0與5.0的矩形面積,以及求h...
作業第六章
一簡答題 1.說明在迴圈結構中break和continue語句的區別。答 break語句 用於終止某個迴圈,程式跳轉到迴圈體外的下一條語句。continue語句 用於跳出本次迴圈,進入下一次迴圈。2.使用for迴圈結構實現 從鍵盤上輸入接收從周一到周五每天學習時間 以小時為單位 並計算每日平均學習時...