![](/img/trans.png)
[英]C# Inheritance: How to invoke the base class constructor when i call the derived class constructor
[英]How to call base class constructor alone through derived class object in c#?
我在一次采訪中得到了以下問題:“如何從派生類對象單獨調用基類構造函數(默認構造函數)”。 該對象不應調用派生類的默認構造函數。 這怎么可能?
這是代碼:
class a
{
public a()
{
MessageBox.Show("Base class called");
}
}
class b : a
{
public b()
{
MessageBox.Show("Derived class");
}
}
我只想顯示基類構造函數,而沒有調用派生類的構造函數。 我怎樣才能做到這一點?
假設您有以下課程:
class Base
{
public Base() { }
}
class Derived : Base
{
public Derived() { }
}
創建派生類時會自動調用base
類的構造函數。 因此,根本不可能在不調用派生類的情況下調用基類構造函數。 唯一的方法是創建一個Base
類型的實例而不是Derived
,如果你創建一個Derived
它的構造函數肯定會被調用。
但是,如果您在Derived
有第二個構造函數直接調用Base
-one,您當然可以繞過派生類的默認構造函數:
class Derived : Base
{
public Derived() { }
public Derived(params object[] args) : base() { }
}
現在您可以進行以下調用:
Derived d = new Derived(); // will call both default-constructors
Derived d1 = new Derived(null); // calls the params-overloaded constructor and not its default one
試試這個代碼::
class Base
{
public Base() {
Console.WriteLine("BaseClass Const.");
}
}
class Derived : Base
{
public Derived() { }
public Derived(params object[] args) : base() { }
}
public class Program
{
public static void Main(string[] args)
{
Derived d = new Derived(null) ;
}
}
預期輸出:
BaseClass Const.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.