在派生類中繼承基類的時候,也就繼承基類的實作代碼,是以在派生類中可以把有些方法隐藏掉(或者說可以直接使用)例如下面的隐藏,(為什麼隐藏給的原因的是代碼不像預期那樣工作了)
public class MyBaseClass
{
public void DoSomething()
{
// Base implementation.
}
}
public class MyDerivedClass : MyBaseClass
{
public void DoSomething()
{
// Derived class implementation, hides base implementation.
}
}
但是這樣會出錯的,如果我們無意間隐藏了一個需要使用的成員,這時候需要修正的。(如果系統提示隐藏了一個成員,而你又找不到問題所在,這就是你隐藏了基類的一個成員)但是如果你是故意想隐藏這個成員的話,那麼需要在代碼前加NEW的
new public void DoSomething()
{
// Derived class implementation, hides base implementation.
}
當然也可以在派生類中重寫基類的方法(前提基類的方法是抽象的虛拟的)見例子
public class MyBaseClass
{
public virtual void DoSomething()
{
Console.WriteLine("Base imp");
}
}
public class MyDerivedClass : MyBaseClass
{
public override void DoSomething()
{
Console.WriteLine("Derived imp");
}
}
當然也可以用NEW,這時候基類方法就無所謂了見下例:
public class MyBaseClass
{
public virtual void DoSomething()
{
Console.WriteLine("Base imp");
}
}
public class MyDerivedClass : MyBaseClass
{
new public void DoSomething()
{
Console.WriteLine("Derived imp");
}
}
無論是重寫成員還是隐藏成員,都可以在派生類的内部通路基類成員。這在許多情況下都是很
有用的,例如:
1 要對派生類的使用者隐藏繼承的公共成員,但仍能在類中通路其功能。
2要給繼承的虛拟成員添加實作代碼,而不是簡單地用重寫的新執行代碼替換它。
為此,可以使用 base 關鍵字,它表示包含在派生類中的基類的實作代碼(在控制構造函數時,
其用法是類似的,如第9 所述),例如:
public class MyBaseClass
{
public virtual void DoSomething()
{
// Base implementation.
}
}
public class MyDerivedClass : MyBaseClass
{
public override void DoSomething()
{
// Derived class implementation, extends base class implementation.
base.DoSomething();
// More derived class implementation.
}
}
這段代碼執行包含在 MyBaseClass 中的 DoSomething()版本,MyBaseClass 是 MyDerivedClass
的基類,而DoSomething()版本包含在MyDerivedClass 中。因為base 使用的是對象執行個體,是以在靜
态成員中使用它會産生錯誤。
而另外一個關鍵字this則是在目前對象的執行個體,(直接上例子啦)
public void doSomething()
{
MyTargetClass myObj = new MyTargetClass();
myObj.DoSomethingWith(this);
}
******************************************華麗麗的分割線你懂得!
而this最常用的是如下的代碼
this 關鍵字的另一個常見用法是限定本地類型的成員,例如:
public class MyClass
{
private int someData;
public int SomeData
{
get
{
return this.someData;
}
}
}
許多開發人員都喜歡這個文法,它可以用于任意成員類型,因為可以一眼看出引用的是成員,
而不是局部變量。
轉載于:https://www.cnblogs.com/mamiyiya777/p/5826322.html