从父级[重复项]调用子类`new`方法>>

问题描述 投票:-7回答:1

我有一个基类和子类,例如:

class BaseClass
{
    public void MethodA()
    {
        MethodB();
    }

    public void MethodB()
    {
        Debug.Log("BaseClass MethodB");
    }
}

class SubClass : BaseClass
{
    public new void MethodB() // <- without `new` keyword there's a warning on this line
    {
        Debug.Log("SubClass MethodB");
        base.MethodB();
    }
}

当调用BaseClass实例的MethodA时,它首先调用MethodB,但仅调用BaseClass,而不首先调用SubClass。例如

var subclass = new SubClass();
subclass.MethodA(); // Does not log "SubClass MethodB" first.  Only logs "BaseClass MethodB"

您如何确保父方法调用子类方法?

注意,new行上没有MethodB关键字,Visual Studio发出警告:'SubClass.MethodB()' hides inherited member 'BaseClass.MethodB()'. Use the new keyword if hiding was intended.

我有一个基类和子类,例如:class BaseClass {public void MethodA(){MethodB(); } public void MethodB(){Debug.Log(“ BaseClass MethodB”); }}类...

c# inheritance overriding subclass
1个回答
1
投票

要从基类中调用Subclass.MethodB,您需要使用virtualoverride关键字。例如:

© www.soinside.com 2019 - 2024. All rights reserved.