【发布时间】:2014-11-15 12:00:01
【问题描述】:
我有三个无法修改的类。简而言之,我有一个类 Program,以及其他两个类 ProgramClient 和 ProgramServer,它们继承自 Program。 Program 类有一个静态变量。
到目前为止,我在两个不同的应用程序中运行 ProgramClient 和 ProgramServer,没有任何问题。 现在我需要在同一个应用程序中运行这两个类。这样做,他们共享父类的静态变量,因此发生了不好的事情。
我怎样才能将这两个类保留在它们自己的“上下文”(JVM?)中,以确保静态变量仅由其中一个子类使用?
【问题讨论】:
-
在单独的虚拟机中运行每个?这有什么问题?
-
我认为您的 OO 概念/设计在这一点上没有得到正确考虑。如果 2 个类从一个超类继承,你总是必须应用 is-a-rule(从你的类名来看似乎是这样)但是如果你在超类中有静态字段,它们应该是相同的子类。最好的办法是将静态字段移动到子类中而不是继承它。如果子类在这个变量中应该有不同的值,那么从超类继承它是错误的设计方式
-
这不是有点违背静态变量的观点吗?
-
@MuhammadHamed 是的,我认为这是正确的做法,但我不知道该怎么做,因为这两个类是同一个应用程序(eclipse 项目)的一部分。你能解释一下怎么做吗?
-
@gutenmorgenuhu 我同意你的观点,但正如我所写,我无法修改类
标签: java inheritance static-members