【问题标题】:Different classes (all extending the same class) in a list/array (java)列表/数组(java)中的不同类(都扩展同一个类)
【发布时间】:2016-03-06 16:11:03
【问题描述】:

我想列出类的实例。这些实例属于不同的类,尽管它们都属于同一个超类。这是我应该避免的吗?或者这样好吗。任何关于如何最好地实现这一点的建议都会很棒。

例如,我有一个超类 Vehicle 和另外两个类 Bike 和 Car 作为扩展 Vehicle 的类。为方便起见,我想将所有车辆存储在一个数组/列表中,因为我想使用一个简单的循环显示所有车辆。

希望我没有认真地忽略某些事情,这不会太琐碎(或只是不好的做法)。

【问题讨论】:

  • 你有没有尝试过?你能显示一些代码吗?您可以简单地使用包含 Vehicle 实例的 ArrayList
  • 是的,您可以这样做,但请记住,在从列表中检索条目时,您只能假设您得到的是 Vehicle,并且您只能调用在 Vehicle 上声明的方法没有instanceof 检查和类转换。正确的解决方案取决于您对数据的处理方式。

标签: java arrays list class superclass


【解决方案1】:

这肯定是合法的举动

public class Main {

    public static void main(String[] args) {
        List<Vehicle> list=new ArrayList<>();

        list.add(new Car());
        list.add(new Bike());
    }
}

class Vehicle{}
class Car extends Vehicle{}
class Bike extends Vehicle{}

但这一切都取决于您要达到的目标。

【讨论】:

  • 你说这是一个合法的举动,有点暗示这是不好的做法......是这样吗?
  • 绝对不是。我的意思是说我不能告诉你这是否是一种不好的做法,因为它实际上取决于上下文。法律结构,良好做法,如果不被滥用 =)
  • 我尝试做的是制作一个用于管理任务的新应用程序。在我的方法中,我想使用不同类型的任务。在应用程序中,我希望能够列出所有任务,但也可以列出特定类型的任务,具体取决于用户在给定时间点查找的内容。
  • 嗯,这似乎是一个合理的解决方案。多态在行动!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2013-02-14
  • 1970-01-01
  • 2017-05-06
  • 2017-07-09
  • 1970-01-01
相关资源
最近更新 更多