【发布时间】:2011-03-22 16:39:39
【问题描述】:
我正在尝试了解如何解决 Java 中的多态性。我创建了一个父类,它有太多的通用方法,所有子级都将以相同的方式使用。
每个子类的子类都共享静态信息,这些变量或信息将用于仅在父类中声明的方法中。
希望从 Parent 方法访问静态变量的问题似乎不太可能,
这是一种为每个实例声明公共信息的解决方案,但由于将有 1000 个实例,因此非常浪费内存。
我的意思的简单阐述是以下代码:
class testParent {
static int k;
public void print()
{
System.out.println(k);
}
}
class testChild2 extends testParent
{
static
{
testChild2.k =2;
}
}
public class testChild1 extends testParent{
static
{
testChild1.k = 1;
}
public static void main(String[] args)
{
new testChild1().print();
new testChild2().print();
new testChild1().print();
}
}
我期望的输出是
1
2
1.
但会发生什么:
1
2
2
有人可能会认为,在每个子类启动时,都会设置该子类的静态变量,然后引用该子类的所有方法都可以访问相应的“k”值。
但实际发生的是,所有子类都在同一个静态变量中进行编辑,该静态变量与所有子类共享,因此破坏了我为每个子类及其实例使用静态变量以及在父类中使用常用方法访问这些变量的全部观点。
知道怎么做吗?
【问题讨论】:
-
是的,因为在我的应用程序中,每个子类在运行时都至少有 500 个实例,并且公共变量是字符串数组,你不认为不使用静态是巨大的内存浪费吗?
标签: java inheritance static polymorphism