2010-09-28 100 views

回答

0

protected僅僅意味着子類都能夠看到該成員,但該成員不是公共API對象的一部分。

重新提出這個問題;這取決於你「數據成員」的含義。如果你的意思是領域,那麼國際海事組織他們應該不是是。製造某些狀態(屬性)protected,如果子類將需要該信息(特別是方法),但它不是外部世界所必需的。

然而,一個更好的例子是protected virtual,其中繼承者能夠改變一個否則私人(對外界)成員的實現。經典的例子是:

protected virtual OnSomeMemberChanging(...) {} 
protected virtual OnSomeMemberChanged(...) {} 

那裏繼承者現在可以通過使用override改變實現(通常但並不總是在某些時候調用base.Whatever()調用原來實行的反應(甚至塊)更改關鍵值好)。

3

受保護的成員可以通過子類訪問,如果您將其聲明爲私有,則不屬於這種情況。

你聲明事物是隱私的或者是隱藏它們的,因此只有外部世界應該使用的相關事物纔會暴露。

如果你想知道爲什麼你想隱藏來自外部世界的成員,你應該得到一本關於面向對象的概率的書,因爲這些是基本概念。

+0

謝謝,但這是唯一的好處。 – user 2010-09-28 07:30:48

+0

這是關於保護和項目整潔和可維護性。它與表演或任何事物無關。你可以讓所有的事情公開並且快樂(但是這樣會更難以維持,而且很不專業)。 – Palantir 2010-09-28 07:33:16

0

MSDN

的類型或成員只能由在相同的類或結構的代碼,或在從該類派生的類訪問。

可能的好處:限制進入類和它的直接兒童

+0

不只是直接;所有的後代。也;你不能從一個結構繼承,所以是沒有意義的。 – 2010-09-28 07:31:04