【问题标题】:Store objects of two subclasses in the same Vector/List将两个子类的对象存储在同一个 Vector/List 中
【发布时间】:2021-04-08 20:11:51
【问题描述】:

我目前正在为一个学校项目开发一个基本的光盘信息管理系统,用户可以在其中添加/删除光盘信息。规格中提到了两种类型的光盘,音乐和游戏。它们都有一些共享属性,所以我创建了一个名为Disc 的超类,它有两个子类MusicGame 将继承这些共享属性的光盘。规范还规定,两种类型的光盘都需要一个可维护的列表,因此无论用户选择添加音乐还是游戏,它都会被添加到一个 DiscInfo 列表中。

我的问题是,如何定义两个对象的列表?子类的对象也是超类的对象吗,所以我可以创建一个Disc 对象列表,其中可以添加/删除MusicGame 对象?

我是 OOP 的新手,所以我对类和对象的理解非常初级,我可能想错了。希望我的问题有意义。

【问题讨论】:

  • 如果这是您的问题,List<Disc> 可能同时包含 MusicGame 对象。
  • 这正是我要问的,谢谢!
  • 在阅读时,可以使用getClass()instanceof 之类的类型检查来处理细节。或者,您像这样创建一个enumpublic enum DiscType {MUSIC, GAME},并将其作为Disc 类中的附加成员变量。如果您必须区分许多子类,这与 switch 语句结合通常是最快的,而且它也比类型检查更容易和更便携。

标签: java list oop object subclass


【解决方案1】:

如果列表的大小已知,则可以使用数组类型,但也可以使用列表或向量。由于多态性,您可以将 Disc 中的任何子类型放入 List<Disc>

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 2015-07-13
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多