我在这里面临一个问题,让我们假设我有一个父类:
class ParentClass
{
public void MethodA()
{
//Do stuff
MethodB();
}
public void MethodB()
{
//Do stuff
}
}
继承ParentClass并重写MethodB()的子类:
class ChildClass : ParentClass
{
public new void MethodB()
{
//Do stuff
}
}
现在,如果我从ChildClass对象中调用MethodA()
public static void Main()
{
ChildClass childObject = new ChildClass();
childObject.MethodA();
}
我怎样才能确定将调用MethodB()帽子是来自子类的帽子?
答案 0 :(得分:5)
如果您修复了编译错误,通过在父类中创建方法 virtual ,并通过向子类中的方法添加返回值,那么它将正常工作:
class ParentClass
{
…
public virtual void MethodB()
{
//Do stuff
}
}
class ChildClass : ParentClass
{
public override void MethodB()
{
//Do stuff
}
}
答案 1 :(得分:0)
using System;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
var childObject = new ChildClass();
childObject.MethodA();
childObject.MethodB();
childObject.MethodC();
Console.ReadLine();
}
}
class ParentClass
{
public void MethodA()
{
//Do stuff
_MethodB();
}
private void _MethodB()
{
Console.WriteLine("[B] I am called from parent.");
}
public virtual void MethodB()
{
_MethodB();
}
public void MethodC()
{
Console.WriteLine("[C] I am called from parent.");
}
}
class ChildClass : ParentClass
{
public override void MethodB()
{
Console.WriteLine("[B] I am called from chield.");
}
public new void MethodC()
{
Console.WriteLine("[C] I am called from chield.");
}
}
}