两个子类仅共享超类变量的一个实例

Mah*_*ana 0 java

我有一个自行车课程是家长课程。我想要前轮和后轮有两个子类。有没有一种方法可以让我只创建一个超类实例,然后创建两个单独的子类实例,它们只共享一个超类实例。基本上自行车是一个,但轮子是两个,因此自行车的公共变量只需实例化一次。我想采用 IS-A 关系,这样我就可以重用许多变量和方法。另外,我不能在这里使用静态,因为每辆自行车都是不同的实例。

前任:

class Bicycle {
    String name;
    int year;
    double price;
}

class FrontWheel extends bicycle {
    double wheelSize;
}

class BackWheel extends bicycle {
    double wheelSize;
}
Run Code Online (Sandbox Code Playgroud)

在主程序中,如果我创建 FrontWheel 和 BackWheel 的实例,显然会正确创建两组公共变量(年份、名称等)。有没有办法避免公共变量的内存分配重复?Java 中还有其他可用的选项吗?

Axa*_*dax 5

FrontWheel 不是Bicycle而是自行车包含两个轮子!这是一个错误使用继承的示例。

您应该Bycicle 中有一个 FrontWheel 和 BackWheel 实例。

因此,例如

class Bicycle {
  String name;
  int year;
  double price;
  Wheel frontWheel,rearWheel;
}

class Wheel{
  protected double wheelSize;
}
Run Code Online (Sandbox Code Playgroud)