這是否可以阻止從派生類實體訪問基類的公共成員(如方法、變數等)?例如;
public class BaseClass
{
public int m_a;
}
public class DerivedClass : BaseClass
{
base.m_a = 10; //good
}
但是,我不想這樣;
DerivedClass dc = new DerivedClass();
dc.m_a = 20; //not good
那可能嗎?
uj5u.com熱心網友回復:
protected意味著派生類可以訪問它,但是派生類也可以訪問它自己實體的屬性。
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
dc.doSomething(); //set value of baseClass from DerivedClass
// dc.m_a = 20; //'Program.BaseClass.m_a' is inaccessible due to its protection level
// bc.m_a = 20; //'Program.BaseClass.m_a' is inaccessible due to its protection level
Console.WriteLine("Hello World!");
}
class BaseClass {
protected int m_a;
public void setValue(int m_a) {
this.m_a = m_a;
}
}
class DerivedClass : BaseClass {
BaseClass baseClass = new BaseClass();
public void doSomething() {
this.m_a = 5; // valid. You are accessing your own variable
//baseClass.m_a = 5; // invalid. You are attempting to access the protected property externally
baseClass.setValue(5); // valid. Using a public setter
}
}
uj5u.com熱心網友回復:
嘗試這個
public static void Main()
{
DerivedClass dc = new DerivedClass();
dc.m_a = 20; // ERROR!
}
public class BaseClass
{
protected int m_a;
}
public class DerivedClass : BaseClass
{
public DerivedClass()
{
m_a=20; //No Error
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314640.html
