我有两个类Boat和Mines,它们具有完全相同的方法和变量。
唯一的区别是它们在不同位置初始化。
for Boat
xPosition = 3 yPosition = 4
for Mine
xPosition = 1 yPosition = 1
我被告知特别不要使用继承,我可以用什么来改进设计
答案 0 :(得分:1)
你可以给他们两个位置类,给那个类X和Y位置,并使它成为我和船的属性。不幸的是,你需要为位置类提供getter / setter。
答案 1 :(得分:1)
面向对象编程的想法正是出于这个原因。
Boat and 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;
我希望自己可以更具针对性,但希望这能让你走上正轨。
编辑:你不喜欢CS101答案 2 :(得分: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
更好的名称。