首页
学习
活动
专区
圈层
工具
发布

类交互
EN

Stack Overflow用户
提问于 2012-03-28 07:16:11
回答 2查看 268关注 0票数 0

好的,我正在做一个关于“购物中心”的模拟,我有许多类在相同的“水平”,这与每个人的个性相对应。例如,我有一个类:小丑,小偷,刺客,物质主义者,等等,在同一级别和一个父亲类称为客户。在Client类中,我有一些用于吃饭、行走等的方法,每个特定的类都有一个特定的方法,小偷偷窃,刺客杀死等。我想知道如何将每个"client“放在一个列表中,同时仍然强制转换每个特定的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-28 07:26:20

也许你应该这样做:

代码语言:javascript
复制
public abstract class Client
{
    public void Eat() { /* some implementation */ }
    public void Walk() { /* some implementation */ }
    public abstract void TypeSpecificAction();
}

public class Thief
{
    public overeride void TypeSpecificAction() { Steal(); }
    public void Steal() { /* some implementation */ }
}

public class Assassin
{
    public overeride void TypeSpecificAction() { Assassinate(); }
    public void Assassinate() { /* some implementation */ }
}

然而,这只在一些有限的情况下有效。一般来说,这个问题的解决方案是向下转换,正如usr回答的那样。

票数 0
EN

Stack Overflow用户

发布于 2012-03-28 07:20:46

这将需要一个运行时转换。您可以将列表类型化为List<Client>,并在访问列表时进行强制转换。然而,这并不是一个特别可靠的设计。如果你的客户端足够不同,以至于你需要在运行时转换它们,我会问你为什么要使用继承。

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

https://stackoverflow.com/questions/9899062

复制
相关文章

相似问题

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