在Java中使用带继承的最终列表

在Java中使用带继承的最终列表,java,inheritance,constructor,static,final,Java,Inheritance,Constructor,Static,Final,我是Java新手,我在考虑一种特殊情况,在这种情况下,我们有一个超类和两个子类。我需要在每个子类中存储一个字符串的静态最终ArrayList,但由于它们是两个字符串的ArrayList,所以我考虑在超类中移动这些字符串(显然是制作一个ArrayList),以避免重复,并让子类在构造函数中指定它们的常量值。我可以这样做吗?我遇到了一些困难,因为子类构造函数的第一条指令必须是超类构造函数,所以我不能在构造函数中声明一个本地ArrayList,然后将它交给超类构造函数(所以我必须将这个ArrayLis

我是Java新手,我在考虑一种特殊情况,在这种情况下,我们有一个超类和两个子类。我需要在每个子类中存储一个字符串的静态最终ArrayList,但由于它们是两个字符串的ArrayList,所以我考虑在超类中移动这些字符串(显然是制作一个ArrayList),以避免重复,并让子类在构造函数中指定它们的常量值。我可以这样做吗?我遇到了一些困难,因为子类构造函数的第一条指令必须是超类构造函数,所以我不能在构造函数中声明一个本地ArrayList,然后将它交给超类构造函数(所以我必须将这个ArrayList存储在子类中,我基本上处于起始点)。我能做些什么来解决这个问题

不,你不能这样做。当你开始谈论
static
时,关于子类和超类的任何讨论都会被抛到脑后。要么完全放弃
静态
的概念,要么放弃让子类和超类共享它的所有希望。(提示:删除
static
是正确的选择。)


OP澄清后编辑:您需要做的是在超类中声明一个抽象方法
getCities()
,然后在每个子类中实现这个方法。通过这个方法,每个子类都将返回自己的静态城市列表。

您可以发布一些您已经尝试过的代码吗?我将更好地解释这种情况。我必须管理两种航运:国家航运和国际航运(它们是超类航运的子类)。我要做的练习告诉我考虑一个静态的国家航运城市列表和一个静态的国际航运城市列表(当然列表是在练习中写的)。所以我有一个进一步的问题:如果我的程序基本上只与这个列表一起工作,我可以在tester类中假设我知道这个列表吗?我知道,这有点奇怪,我也很困惑。我根据这一点修改了我的答案。另一个问题是:当我调用它时,我必须将起始城市和目标城市传递给Speedition构造函数。因此,我假设getCities()方法必须是静态的,否则我无法调用它