java - 两个子类仅共享父类(super class)变量的一个实例

标签 java

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

例如:

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

class FrontWheel extends bicycle {
    double wheelSize;
}

class BackWheel extends bicycle {
    double wheelSize;
}

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

最佳答案

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

您应该在自行车中有一个 FrontWheel 和 BackWheel 实例。

因此,例如

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

class Wheel{
  protected double wheelSize;
}

关于java - 两个子类仅共享父类(super class)变量的一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25719984/

相关文章:

java - 通用动画叠加 View 的枢轴不起作用

java - 在java中打印图形中的正方形+轴

java - 选择条件相似的数据

java - 自动重新连接 RabbitMQ channel

java - 如何激活/启用交互器

java - linux 上 java 进程的高 iowait

java - 使用 Jackcess 检索存储在文本字段中的数值会出现 ClassCastException

java - Log4j2 网络查询

java - 用 Java 设计 TCP 服务器/客户端节点和路由器

java - 在jsp页面中做request.setAttribute,在java代码中做request.getAttribute