對繼承的本質的一些理解,看了些文章和部落格,總結成自己的文字加深一下理解,可能表達和理解的不是很透徹,請帶著批判的眼光閱讀~
先附上大神們的文章~
new建立物件時,遞迴查詢父類,分配記憶體,最先建立的應該是object。
物件是在執行時建立的,方法是在編譯時建立,物件欄位和方法的建立和呼叫遵循執行就近原則,因此子類會拷貝父類的方法和字段,父類的字段和方法在前,子類的新新增的方法和字段在後,呼叫按字段和方法儲存的順序呼叫,如果子類重寫父類的方法,就會覆蓋從父類拷貝的方法,如果用new定義同名方法,就會隱藏父類方法的實現,父類的方法還存在,排在子類同名方法前
呼叫的方法是子類還是父類的,和引用型別無關,只和建立的物件是子類還是父類物件有關(關注物件原則),同時宣告引用型別的不同只會決定對方法的訪問許可權的不同,父類可以宣告建立子類物件,是因為子類會繼承拷貝父類的方法和字段,在子類中父型別的引用具有訪問許可權。而子類不可宣告和建立父類物件是因為,父類中子類指標是不具有訪問許可權的。
父型別的引用只能呼叫子類中從父類拷貝的方法和字段,對子類新新增的方法和字段是無法呼叫的。子型別的引用呼叫的優先順序按父類在前,子類的在後原則,如果子類使用new定義了同名方法,那麼就會隱藏父類的方法,優先呼叫子類的方法
簡單的助於理解的**:
public class bird
}public class chicken : bird
public override string showtype()
}呼叫**如下:
bird bird = new chicken();
chicken chicken = new chicken();
string str1 = bird.showtype();
string str2 = chicken.showtype();
結果:str1-chicken str2-chicken
改一下子類的方法
public class chicken : bird
public new string showtype()
}結果:str1-bird str2-chicken
雖然建立的都是chicken物件,但是bird是無法呼叫chicken中的show()方法的,chicken是可以的,這就是引用型別的訪問許可權的不同。
c 個人學習筆記 類繼承
面對物件過程程式設計的主要目的之一是提供可重用的 塊。當專案十分龐大時,對已通過測試的 進行重用比重新編寫 更能提供效率,節省時間。c 通過擴充套件和修改類來提高 的重用性,這種方法叫類繼承。從已有的類 基類 派生出新的類 派生類 派生類繼承了基類的所有特性 成員變數 方法等 並且還可以在此基礎上新...
SAP BW個人學習筆記
sap bw個人學習筆記 難免有錯,持續更新,切勿對號入座。一 kpi 1 kpi是線性遞增的 2 kpi關鍵指標 一般情況下,2個模組,就有40個kpi,3個模組,有60多個kpi 二 增強 1 只有不符合要求時,才使用增強,還要使用標準字段。三 財務資料源 財務資料源是用的後像,也即是餘像,只能...
ajax個人學習筆記
1.function createxhr else if typeof activexobject undefined catch e else 2.ie瀏覽器第一次向伺服器端請求,獲取最新資料,其後預設獲取的是快取資料,而不是最新的資料,可以使用js中的隨機字串處理。3.ajax非同步 true ...