3

我正在尝试覆盖/重载已在基类中被覆盖的虚函数。为了更好地理解我想要做什么,请查看以下示例:

public class Parent
{
    public virtual void foo() {
        print("Parent::foo()");
    }
}

public class Derived : Parent
{
    public override void foo() {
        print("Derived::foo()");
    }
}

public class Child : Derived
{
    public override void foo() {
        print("Child::foo()");
    }
}


// When I create an instance of Child and call the method foo, 
// it calls the Derived::foo() method and not Child::foo()
// How can I make Child override Derived::foo()?

是否可以覆盖 Derived::foo()?如果不是,你会建议我如何解决这个问题?

4

2 回答 2

2

Child::foo这在 C# 中调用。试试这个代码:

class Program {
    static void Main()
    {
        Parent foo = new Child();
        foo.foo();
    }
}

// Define other methods and classes here
public class Parent
{
    public virtual void foo() {
        Console.WriteLine("Parent::foo()");
    }
}

public class Derived : Parent
{
    public override void foo() {
        Console.WriteLine("Derived::foo()");
    }
}

public class Child : Derived
{
    public override void foo() {
        Console.WriteLine("Child::foo()");
    }
}

这将运行并打印Child::foo()

于 2013-11-12T01:13:14.417 回答
0

如果没有看到你的调用代码,我不能肯定地说,但你确定你没有犯错并创建一个实例Derived吗?

于 2013-11-12T01:14:26.650 回答