代码如下:
class Program
{
static void Main(string[] args)
{
DerivedFromBad b = new DerivedFromBad();
b.doSomething();
System.Console.ReadKey();
// Outputs: ABC is less than abc
}
}
public class BadBaseClass
{
public void doSomething()
{
this.SetState();
}
public virtual void SetState()
{
Console.WriteLine("BadBaseClass"); }
} public class DerivedFromBad : BadBaseClass
{
public override void SetState()
{
Console.WriteLine("DerivedFromBad ");
} }结果显示: DerivedFromBad如果我想在 BadBaseClass.doSomething方法调用 自身的 SetState()方法要怎么办。
也就是结果要为:BadBaseClass
class Program
{
static void Main(string[] args)
{
DerivedFromBad b = new DerivedFromBad();
b.doSomething();
System.Console.ReadKey();
// Outputs: ABC is less than abc
}
}
public class BadBaseClass
{
public void doSomething()
{
this.SetState();
}
public virtual void SetState()
{
Console.WriteLine("BadBaseClass"); }
} public class DerivedFromBad : BadBaseClass
{
public override void SetState()
{
Console.WriteLine("DerivedFromBad ");
} }结果显示: DerivedFromBad如果我想在 BadBaseClass.doSomething方法调用 自身的 SetState()方法要怎么办。
也就是结果要为:BadBaseClass
{
static void Main(string[] args)
{ //DerivedFromBad b = new DerivedFromBad();
BadBaseClass b = new BadBaseClass();
b.doSomething();
System.Console.ReadKey();
} }
public class BadBaseClass
{ public void doSomething()
{
this.SetState();
}
public virtual void SetState()
{
Console.WriteLine("BadBaseClass"); }
} public class DerivedFromBad : BadBaseClass
{
public override void SetState()
{
Console.WriteLine("DerivedFromBad ");
} }
好像要用new来覆盖
class Program
{
static void Main(string[] args)
{
BadBaseClass b = new DerivedFromBad();
b.doSomething();
System.Console.ReadKey();
} }
public class BadBaseClass
{ public void doSomething()
{
this.SetState();
}
public void SetState()
{
Console.WriteLine("BadBaseClass"); }
} public class DerivedFromBad : BadBaseClass
{
public new void SetState()
{
Console.WriteLine("DerivedFromBad ");
} }
{
static void Main(string[] args)
{
DerivedFromBad b = new DerivedFromBad();
b.doSomething();
System.Console.ReadKey();
}
} public class BadBaseClass
{
public void doSomething()
{
this.SetState();
} public virtual void SetState()
{
Console.WriteLine("BadBaseClass");
}
} public class DerivedFromBad : BadBaseClass
{
public new void SetState()
{
Console.WriteLine("DerivedFromBad ");
}
}
class Program
{
static void Main(string[] args)
{
DerivedFromBad b = new DerivedFromBad();
b.doSomething();
System.Console.ReadKey();
} }
public class BadBaseClass
{ public void doSomething()
{
this.SetState();
}
public void SetState()
{
Console.WriteLine("BadBaseClass"); }
} public class DerivedFromBad : BadBaseClass
{
public new void SetState()
{
Console.WriteLine("DerivedFromBad ");
} } // 输出:BadBaseClass
public sub doSomething()
MyClass.SetState()
end sub
(给个很绕口的名字:虚方法的非虚调用)
class Program
{
static void Main(string[] args)
{
DerivedFromBad b = new DerivedFromBad();
b.doSomething();
System.Console.ReadKey();
} }
public class BadBaseClass
{ public void doSomething()
{
this.SetState();
}
public virtual void SetState()
{
Console.WriteLine("BadBaseClass"); }
} public class DerivedFromBad : BadBaseClass
{
public new void SetState()
{
Console.WriteLine("DerivedFromBad ");
} } // 输出:BadBaseClass