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

时间:2014-09-08 08:20:57

标签: java

我有一个父类的自行车课程。 我想为前轮和后轮提供两个子类。 有什么办法我只能创建一个超类实例,然后创建两个独立的子类实例,只共享一个超类的实例。基本上自行车是一个,但车轮是两个,因此自行车的常见变量必须只实例化一次。我想去IS-A关系,这样我就可以重复使用很多变量和方法。此外,我不能在这里使用静态,因为每个自行车都是不同的实例。

例如:

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

class FrontWheel extends bicycle {
    double wheelSize;
}

class BackWheel extends bicycle {
    double wheelSize;
}

在主程序中,如果我创建FrontWheel和BackWheel的实例,显然会创建两组公共变量(年份,名称等)。反正是为了避免重复公共变量的内存分配? Java中可用的任何其他选项?

2 个答案:

答案 0 :(得分:4)

FrontWheel 不是 Bicycle,但是自行车包含两个轮子!这是一个不正确使用继承的示例。

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

因此,例如

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

class Wheel{
  protected double wheelSize;
}

答案 1 :(得分:0)

继承以术语专业化描述IS-A关系。特殊的自行车可以从自行车继承,但车轮不能专业化自行车。

class FrontWheel; // forward declaration
class BackWheel ; // forward declaration
class Bicycle {
String name;
int year;
double price;
Frontwheel f; // aggregation or composition to be precise
BackWheel b; // aggregation or composition to be precise
}

class FrontWheel  {
Bicycle b; // member of which Bicycle 
double wheelSize;
}

class BackWheel {
Bicycle b; // member of which Bicycle 
double wheelSize;
}