子類對父類中的屬性和字段的改寫

2022-02-18 03:13:43 字數 1112 閱讀 9113

子類對父類中的屬性和字段的改寫

剛開始聽老師講,欄位要用private來修飾,屬性用public來修飾,通過屬性來控制字段,字段儲存資料。

那為什麼要用private來修飾字段呢???

原因:防止外部人員通過子類來改寫父類中的屬性以及字段,從而破壞了專案的初衷,造成嚴重的後果。

例子:

父類及成員:

class

bea

public

int_age;

//對年齡屬性的改寫

public

virtual

intage

set

else

}

}public

string

_name;

public

string

name

set

}}

子類及成員:

1

class

green:bea26

//對父類中的age屬性的改寫

7public

override

intage810

set11

16else

1720

}21}

22 }

接下來在main方法中輸出父類中的成員age

1

class

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....