【发布时间】:2014-01-01 15:24:09
【问题描述】:
我正在寻找一种在 Java 中实现代码重用的方法。 许多类应该有自己的(静态)数据。 他们都应该有一个共同的方法,但该方法应该对自己的数据进行操作。 下面的代码仅返回“BASE DATA”行,而所需的输出将是 BASE DATA、Above1 DATA、Above2 DATA 等等。
在 Java 中实现此目的的正确方法是什么?
public class Base{
static private String data="BASE DATA";
static void printData(){System.out.println(data);}
public static void main(String[] args){
Base.printData();
Above1.printData();
Above2.printData();
Above3.printData();
}
}//Base
class Above1 extends Base {
static private String data="Above1 DATA";
}//Above1
class Above2 extends Base {
static private String data="Above2 DATA";
}//Above2
class Above3 extends Base {
static private String data="Above3 DATA";
}//Above3
【问题讨论】:
-
你不能直接做。检查此以获取一些提示:stackoverflow.com/questions/5667764/…
-
为什么
data需要是静态的?为什么不让它成为一个可以被子类覆盖的实例变量呢?您总是可以在某处将实际字符串定义为常量,然后将实例变量设置为这些常量。 -
比@superEb 更进一步,在这个例子中你甚至不需要多个类。如果
data是一个实例变量,Above1、Above2和Above3都可能只是同一个类的实例,因为它们在结构和功能上是相同的。 -
看起来 pksiazek 建议的解决方法对我有用。数据需要是静态的(这只是现实生活中问题的一个例证)。似乎命令模式可能不起作用,原因有两个:1. 每个 Receiver 类都必须实现该功能 2. 作为接口的命令接口不允许静态抽象方法(但我听说在 Java 8 中发生了变化)。跨度>
标签: java inheritance methods reusability