2012-04-25 31 views
1

SimpleApp教程中,作者将他所有的代码放在一个类文件中。雨水和水桶在里面。我会如何将代码移到不同的类中?

我试着把代码放到另一个类中,但之后我的代码中会有重复的方法,并且逻辑上它会不正确。例如,我在游戏中不能有两种创建方法。

我怎么会拿tutorial,并把它分成不同的类?

+0

你的问题是不是很clear.Can粘贴代码你想转移到一个单独的课程。您应该始终通过IDE中提供的重构工具来移动代码。 – Edge 2012-04-25 16:14:44

+0

它在一个类中的所有一个,向下滚动到底部,你会看到我的意思 – Blue 2012-04-25 16:29:23

+2

它是反对SO规范谈论代码不存在这里的问题。 – 2012-04-25 16:37:14

回答

0

这很简单:你可以从OOP风格的编码中受益:
只需使用超类RainBucket,其中包含所有方法,每个方法的代码最少。
从这个超类扩展的其他两个类,并在它重写你的类要使用的方法,这样你会acomplishing以下OOP规则:

  1. 传承:当您从超级派生其他类的两个对象:

    class Bucket extends RainBucket {

    class Rain extends RainBucket {

  2. 多态性:你可以声明两个对象从相同的超类 但作为值就像 这个分配给两个不同的派生类:

    RainBucket bucket = new Bucket()

    RainBucket rain = new Rain()

+0

我认为我做了继承权,但我不明白这种多态性。我创建了但我不知道该把它放在哪里,所以我把它放在最前面。然后我在_create_和_render_方法中都添加了** bucket **和** rain **,但是弹出一个错误提示该方法未定义。所以有什么问题? – Blue 2012-04-25 18:01:18

+0

在此处发布代码。 – GingerHead 2012-04-26 05:47:47

+0

'RainBucket bucket = new Bucket(); \t RainBucket rain = new Rain(); \t @Override \t公共无效创建(){ \t \t雨(); \t \t Bucket(); \t} \t @Override \t公共无效渲染(){ \t \t雨(); \t \t Bucket(); \t}'这是在主类 – Blue 2012-04-26 13:38:58

0

你会抽象出共同的功能集成到一个Abstract classInterface,然后同时拥有雨水桶从类继承。

因此,对于您的特定示例,请通过这两个类,找到所有常用函数并将它们抽象为超类。

+0

您可以提供一个示例或链接,其中有人这样做吗?> – Blue 2012-04-25 16:30:20

+0

@BluFire位于帖子中的链接描述了这一点。查看抽象类链接。它实现了一个叫做'GraphicObject'的抽象类,带有一些函数。然后这些由''Circle'继承,''扩展'它。 – Aidanc 2012-04-25 16:33:53

+0

对不起,由于某种原因,我没有注意到链接 – Blue 2012-04-25 17:35:16

相关问题