首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中使用继承来共享函数

在C#中使用继承来共享函数
EN

Stack Overflow用户
提问于 2012-03-27 02:23:00
回答 5查看 353关注 0票数 0

因此,我对继承和接口的概念还很陌生,我不确定如何实现我想要做的事情。

我有一个character类,它定义了一个角色的位置,旋转方向,纹理,然后我想继承这个类和一个Player和Enemy类,这样我就可以对玩家和敌人使用相同的移动和绘图类,同时添加额外的功能来控制AI。

所以我有一个character类,它是由静态player类继承的,但我无法通过Player类访问position,它说需要一个对象引用。

那么,如何使用继承在播放器和ai之间共享函数,同时仍然能够通过子类访问character类中的变量?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-27 02:30:20

将基类实现为抽象类,而不是静态类。如果没有对实际对象的引用,静态方法将无法访问对象的属性或字段。

票数 2
EN

Stack Overflow用户

发布于 2012-03-27 02:26:51

在此之后,您只需使用"base“关键字来引用父类,这与使用"this”来引用类的当前实例的方式类似。

例如:

代码语言:javascript
复制
//note: abstract is not a pre-requisite for inheritance
abstract class Character
{
     protected float x;
     protected float y;
     protected float z;
     //etc etc
}

public class AIBasic : Character
{
    public void move()
    {
         //purely an example
         base.x++;
         base.y++;
         base.z++;
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-03-27 02:29:46

继承不是这个问题的最佳解决方案。相反,可以考虑使用IoC (控制反转),并创建单独的绘图和移动类。然后将它们组合到单个字符实例中。

Ninject是我最喜欢的IoC工具之一,它们的教程相当完整。事实上,它演示了一个非常简单但常见的游戏角色类。

https://github.com/ninject/ninject/wiki/Injection-Patterns

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9877554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档