可以说我有一个名为Component的抽象类。组件具有三个功能:Start(),Update(float timeStep)和Draw()。 我不希望每个继承Component的类都使用全部三个功能。
我当然可以将所有函数写出来(编辑为澄清:作为覆盖函数,而基本函数是虚拟的),只返回了其中的语句,但是对于继承Component的每个类来说,这样做都是很不方便的。另外,我已经看到它按我想要的方式做过。
例如,在Unity中,可以完全继承继承MonoBehaviour的类中的Update和Start函数,而不会出现任何问题!如果找不到该函数,Unity将忽略它。
我该如何为自己做到这一点?预先感谢!
答案 0 :(得分:1)
您需要了解该解决方案的两个关键字:
Virtual
:可以覆盖,但不是必需的。 abstract
:必须被覆盖。 请看下面的示例代码以更好地理解。
public abstract class BaseClass
{
public abstract void MustOverride(); // It must be overriden
public void NoNeedOverride()
{
// logic goes here
} // No need to override
public virtual void CanBeOverride()
{
// logic goes here
} // Not necessarily be overriden
}
public class DerivedClass : Base
{
}
答案 1 :(得分:0)
您可以编写一个带有Start()的基类,并编写一个具有Update()和Draw()的子类。根据情况,您继承表单基类或基类的子代。
如果项目不太复杂,这应该可以解决问题。