在JavaScript领域度过了许多个月后,我正在学习C#(仅供参考)。
我读了C#
inheritance
介绍以及何时不使用
new/override
并且(请原谅我的无知)我想知道是否有最佳实践或约定来组合具有相同签名的父类方法和派生类方法的输出。
我正在构建的游戏中的一个示例(不是整个文件,只是示例):
// CharController
using static TargetController;
public abstract class CharacterController : MonoBehaviour, ICharacter
{
public virtual TargetTypes Target() {
return TargetTypes.Character;
}
}
// PlayerController
using static TargetController;
public class PlayerController : CharacterController, IPlayer
{
public override TargetTypes Target()
{
return base.Target() | TargetTypes.Player;
}
}
// EnemyController
using static TargetController;
public class EnemyController : CharacterController, IEnemy
{
public override TargetTypes Target()
{
return base.Target() | TargetTypes.Enemy;
}
}
这个
TargetType
enum启用了标志,类型设置为2的幂,因此可以使用位OR运算符组合值。
我假设(根据我目前的理解),如果我从EnemyController派生一个类,并定义了一个返回的相同方法
base.Target() | TargetTypes.Small
(例如)在调用派生(叶子)类Target方法时,我会得到这三种类型:
Character, Enemy, Small
.
如果这种方法完全错误,或者有一些将具有相同签名的方法的输出组合在一起的既定惯例(即也许我应该以某种方式链接这些方法?),请随时给我一个新的(请用智慧和权威!)。
谢谢你的时间!