我對於對象以及從父類和子類調用方法的能力有疑問。繼承基類
基類有一個方法()。在main中,我有objectFromBaseClass和objectFromChildClass。這兩個對象都可以從基類訪問method()嗎?
我想抓住這個想法。
我對於對象以及從父類和子類調用方法的能力有疑問。繼承基類
基類有一個方法()。在main中,我有objectFromBaseClass和objectFromChildClass。這兩個對象都可以從基類訪問method()嗎?
我想抓住這個想法。
的方法,只要()未聲明爲私人的,是的。如果您定義的method()被聲明爲private,那麼只有基類可以訪問它。如果方法被聲明爲protected,那麼基類和所有派生類都可以訪問它。如果方法被聲明爲內部的,那麼它可以在同一個Assembly(dll)中被訪問。如果方法被聲明爲公共的,那麼它可以在任何地方被訪問。
按照Access Modifiers (C# Programming Guide)和Access Modifiers。
這些鏈接將清除您對成員的平易疑問。
你應該使方法()受保護或公開訪問父 和子類。私人方法可在 的課程內訪問,它們是創建/聲明的。
是。正如Bojin Li所說,除非在方法之前聲明瞭像'private'這樣的訪問修飾符,否則從該方法的基類繼承的所有類都將具有「method()」成員。
默認情況下,如果沒有「公共」訪問修飾符的類成員被認爲是私有的。
要記住兩件事(我還沒有看到別人提到過),如果說「method()」是「static」,它可以在任何時候被訪問,並且不需要繼承從它的類中獲得「method()」,你也只能在C#中一次從一個類繼承。
它比這更復雜。如果該方法聲明爲「protected」,則派生類中的方法只能在派生類的實例上調用該受保護的方法。它無法在基類的實例或從相同基類派生的其他類上調用受保護的方法。 – 2012-02-23 04:41:41