我只是想了解以下是否可行。
我有客户,specialCustomer和goldCustomer类。 Customer和GoldCustomer的特殊继承继承自SpecialCustomer。
如何从GoldCustomer访问Customer类的Add()实现?使用base.Add()只调用直接父级的Add()
public class Customer
{
public virtual void add()
{
Console.WriteLine("Base Add");
}
}
public class SpecialCustomer: Customer
{
public override void add()
{
Console.WriteLine("SPL CUST Add");
}
}
public class GoldCustomer : SpecialCustomer
{
public new void add()
{
base.add();// cals the immediate parent.
//How to call the method on Customer base class(Parent's parent)
Console.WriteLine(" chid GOLD CUST Add");
}
}
答案 0 :(得分:0)
我的第一个建议是如果可以避免这种情况(软件很复杂,为什么会让它变得更复杂?)。
如果您无法避免这种情况,第二个建议是this
转换为所需的基本类型并调用所需的方法,例如((Customer)this).add()
但你能解释一下为什么你需要这样做吗?可能是您的设计需要进行一些重构。
答案 1 :(得分:0)
public class Customer
{
public virtual void add()
{
C1();
}
public void C1()
{
Console.WriteLine("Base Add");
}
}
您的代码应如下所示,之后只需致电new GoldCustomer.C1();