我有一个重新创建游戏的任务。我必须实现一个字符列表。例如,我有Character
类,它只有字符的名称。
现在,我需要创建一个角色Warrior
谁是游戏中的敌人。当我的敌人类基本上没有属性时,我是否需要像下面这样实现我的继承:Character --> Enemy --> Warrior
。它更像是一种分类而不是任何东西。
是否可以在同一个类中定义Enemy
和Warrior
,其中Warrior
的类型为Enemy
,类型为{{1} }}?会有更多的敌人,但只有一个Character
。
谢谢
答案 0 :(得分:4)
你说敌人的类基本没有属性。
现在就是这种情况,但使用Enemy类和继承的一个原因是,它现在可以通过(几乎)透明的灵活性构建来更好地预测未来未来的未来需求。
您当然可以为Enemy类创建一个类型,但是当您添加更多敌人时,您可能会发现此解决方案需要以switch
语句和if
子句的形式提供越来越多的代码检查类型。
答案 1 :(得分:2)
如果所有勇士都是敌人,拥有敌人的所有属性,那么是的,让战士成为敌人的子类是有道理的。
正如一些评论所指出的那样,拥有一个复杂的继承链是有问题的,而且对于糟糕的程序架构没有任何意义。
有没有办法在同一个类中定义一个敌人和一个战士,其中Warrior属于Enemy类型,类型为Character?
在我们讨论的继承链中,战士是一种类型的敌人。
我认为你可能会将一个类与定义它的文件混淆。您无法定义具有两种类型的类。您可以在单个.h内定义多个类,并在单个cpp文件中实现它们,但在样式方面,最好在单个.h / .cpp对中定义单个类。