gpt4 book ai didi

C# 抽象方法继承和无意隐藏方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:44:40 25 4
gpt4 key购买 nike

我有一个关于意外隐藏抽象方法的问题。

我正在创建一个基本 Entity 类作为接口(interface),在我正在开发的游戏中创建所有其他实体。

从这个实体类中,我创建了几个派生类。有诸如 MovingEntity、Trigger、Door 等......这些子类中的许多也有从它们派生的子类。例如,MovingEntity 将 Projectile 和 EnemyUnit 等类作为子类。

在我的基本实体类中,我有像 Update() 和 Render() 这样的抽象方法,因为我希望每个实体都实现这些方法。

然而,一旦我进入第二级,这就是我遇到问题的地方。例如,我将使用 Trigger 类。 Trigger 派生自基 Entity 类,但 Trigger 仍然有自己的子类(如 TriggerRespawning 和 TriggerLimitedLifetime)。我不想实例化 Trigger 对象,所以我可以保持该类抽象 - 我只会从 Trigger 的子类创建对象。但是我应该如何处理 Trigger 应该从 Entity 实现的抽象方法呢?

我想我基本上可以在 Trigger 中使用与在 Entity 中相同的代码。声明相同的方法,相同的名称,相同的参数,并称之为抽象。然后,Trigger 的子代将被迫实现实际功能。

但是,这不起作用,因为在 Trigger 类中,我的构建错误表明我正在从基 Entity 类中隐藏抽象方法。

我怎样才能传递强制最终 child 实现这些抽象方法的想法,而不让所有中间的 parent 都实现它们?我需要在第一轮 child 类(class)中使用虚拟吗?

到目前为止,我还没有找到一个好的答案,所以我决定打破并询问。提前谢谢各位。

最佳答案

只是根本不要重新声明方法 - 最终的具体类将必须实现所有仍未实现的抽象方法:

public abstract class Foo
{
public abstract int M();
}

public abstract class Bar : Foo
{
// Concrete methods can call M() in here
}

public class Baz : Bar
{
public override int M() { return 0; }
}

关于C# 抽象方法继承和无意隐藏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7469409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com