我有一个基类和子类,例如:
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”); }}类...
要从基类中调用Subclass.MethodB,您需要使用virtual
和override
关键字。例如: