2014-12-02 49 views
1
class Program 
{ 
    class TestA 
    { 
     protected string protectedStringA; 
    } 

    class TestB : TestA 
    { 
     string StringTestB() 
     { 
      return protectedStringA; 
     } 
    } 

    class TestC : TestB 
    { 
     string StringTestC() 
     { 
      return protectedStringA; 
     } 
    } 


    static void Main(string[] args) 
    { 


    } 
} 

作爲每this鏈路保護所述的定義是「的類型或成員只能由代碼在從衍生的一類在同一類或結構,或被訪問那個類「。這裏的類TestC不是從TestA派生的。但是protectedStringA仍然可以訪問。 類的確切含義是從該類派生而來的?保護訪問修飾符含義衍生

+4

TestC從派生自TestA的TestB派生而來,TestC是TestA。 – 2014-12-02 22:47:05

回答

2

由於B繼承A's(公共和受保護)成員,CB繼承它們全部。這是繼承的關鍵。

從該類派生的類的確切含義是什麼?

這意味着派生類可以訪問其基類的受保護成員。在這種情況下,C實際上是從A間接繼承的。因此它可以訪問所有基類的publicprotected成員。

+0

與智慧一樣,受**保護的**成員可以通過鏈中的任何派生類訪問!這幾乎就像**內部**的訪問級別。 – 2014-12-02 23:05:19

+0

@JohnSmith不,它不是。 「內部」訪問修飾符允許訪問同一程序集中的任何文件。我不需要在同一個程序集中從「公共」類中派生出來,也不需要從類中派生出來在同一個程序集中。 – 2014-12-02 23:17:45

+0

與智慧一樣,受**保護的**成員可以通過鏈中的任何派生類訪問!這幾乎就像**內部**的訪問級別。給我一個例子,這個** protected **方法不能被繼承鏈中的繼承類訪問。 – 2014-12-02 23:21:06

2

儘管TestC不是直接從TestA派生的,但它是間接的,因爲TestB繼承TestA。我希望這有幫助。

2

讓我們把它放在換句話說:

「任何類都可以訪問它的祖先的保護成員」。

如果TypeATypeBTypeB一個祖先是TypeC的祖先,比TypeATypeC的祖先。