子類對父類中的屬性和字段的改寫
剛開始聽老師講,欄位要用private來修飾,屬性用public來修飾,通過屬性來控制字段,字段儲存資料。
那為什麼要用private來修飾字段呢???
原因:防止外部人員通過子類來改寫父類中的屬性以及字段,從而破壞了專案的初衷,造成嚴重的後果。
例子:
父類及成員:
classbea
public
int_age;
//對年齡屬性的改寫
public
virtual
intage
set
else
}
}public
string
_name;
public
string
name
set
}}
子類及成員:
1class
green:bea26
//對父類中的age屬性的改寫
7public
override
intage810
set11
16else
1720
}21}
22 }
接下來在main方法中輸出父類中的成員age
1class
program
29 }
結果:300
原因: 例項father物件的時候,首先會呼叫父類的建構函式,當給父類中的屬性age賦值時,由於子類對父類中該屬性重寫,因此程式會跳過給父類中的屬性age賦值
,轉而直接跳到子類中對屬性的改寫裡面,這就解釋了,結果是300而不是0.
結論:在正常的專案中,我們會對字段做保護處理(private),防止外部人員通過子類來改寫父類中的成員,造成嚴重後果。
在子類中重用父類的屬性
在子類派生出的新的方法中重用父類的方法,有兩種實現方式 一 指名道姓 不依賴繼承 class hero def init self,nickname,life value,aggresivity self.nickname nickname self.life value life value se...
對多型中的父類 子類的認識
對多型中的父類 子類的認識 多型的時候,要注意 子類特有功能,父類引用不能訪問。若需要訪問,可執行以下操作 a 建立子類物件即可。b 把以前的狗轉成真的狗。多型中的轉型 a 向上轉型 從子到父。b 向下轉型 從父到子。class animal class dog extendsanimal publ...
子類繼承父類重寫父類的屬性值問題
試想一下 的執行結果 package com.syc.test public class a class fatherclass class sonclass extends fatherclass 程式的執行結果是 你想對了嗎?我們稍微做乙個改變,繼續試想一下 的執行結果 package com....