[英]in C# how to invoke base class method, which already override in derived class, from derived class instance
我定義了兩個類,基類,人。 和派生類客戶。 在派生類中,我重寫了 display() 方法。 但是我想在客戶實例中調用基類(人)的顯示方法。 我該如何處理?
我知道在 msdn 中有一些使用base()
調用的示例,但我的問題不是在類定義中調用,而是在實例調用中調用。 我認為這是不同的。
using System;
using System.Text;
class Program
{
static void Main(string[] args)
{
person myperson = new person();
myperson.DisplayInfo();
customer mycustomer = new customer();
mycustomer.DisplayInfo();
// --here I want to invoke person.display(). how to realize it?
//mycustomer.base.DisplayInfo();
}
public class person
{
public string Name="base name";
public virtual string DisplayInfo()
{
string msg = Name;
Console.WriteLine(msg);
return msg;
}
}
public class customer : person
{
public new void DisplayInfo()
{
Console.WriteLine("derive "+ Name);
}
}
}
由於您只是使用new
來隱藏基本成員,因此您可以使用
(mycustomer as person).DisplayInfo();
調用基本方法,但我不認為這是一個好習慣。
通常,當您覆蓋基本方法時,您仍然希望在派生方法中運行基本方法
喜歡:
public override void DisplayInfo()
{
//call base method
base.DisplayInfo();
//add your extra code here
}
如果您想在不運行派生邏輯的情況下運行您的基本方法,則可以很容易地將另一個方法添加到您的派生類中,只需調用您需要的基本方法
public void RunBaseDisplayInfo()
{
base.DisplayInfo();
}
您的父類可以保存子類的實例。 根據您的示例執行此操作,它可以工作。
person mycustomer_in_person = new customer();
mycustomer_in_person.DisplayInfo();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.