0

我有两个类 Boat 和 Mines,它们具有完全相同的方法和变量。

唯一的区别是它们在不同的位置初始化。

船用

xPosition = 3 yPosition = 4

我的

xPosition = 1 yPosition = 1

我被明确告知不要为此使用继承,我还能用什么来改进设计

4

3 回答 3

1

你可以给他们两个位置类,给那个类 X 和 Y 位置,让它成为矿井和船的属性。可悲的是,您仍然需要位置类的 getter/setter。

于 2013-09-15T00:03:21.850 回答
1

面向对象编程的想法正是出于这个原因。

Boat 和 Mine 不应该是类,它们应该是由另一个类(我们称之为 waterStuff)制成的新对象。

class waterStuff {
    public xPosition;
    public yPosition;
}

...然后在代码中的某处将它们设置为新对象。我不使用 Java,所以我会尽可能接近:(这些可能在另一个类中,使用 waterStuff 作为命名空间以供参考)

Boat = new waterStuff;
Mine = new waterStuff;

Boat->xPosition = 3;
Boat->yPosition = 4;
Mine->xPosition = 1;
Mine->yPosition = 1;

我希望我可以更特定于 java,但希望这能让你走上正确的道路。

编辑:你不只是喜欢 CS101

于 2013-09-15T00:03:34.160 回答
0

如果它们只是成员的值不同,那么在任何情况下继承似乎都毫无意义。但是有两个不相关的课程会更糟。

这样的事情怎么样?

class SomeClass
{
   int xPosition, yPosition;
   enum Type
   {
      Boat, Mine
   }
   public SomeClass(Type type)
   {
      if (type == Type.Boat)
      {
         xPosition = 3;
         yPosition = 4;
      }
      else
      {
         xPosition = 1;
         yPosition = 1;
      }
      // assign 'type' to a class variable here if required
   }
}

构造使用:

new SomeClass(SomeClass.Type.Boat)

或者:

new SomeClass(SomeClass.Type.Mine)

您可能想选择一个比SomeClass.

于 2013-09-15T00:06:34.227 回答