子类使用父类中static变量的疑问

9CNR1 2010-01-12 01:41:40
For example:


public abstract class A {

protected static D d = null; // 定义D的一个对象

public void bar() {
// 类D采用了Singleton模式,以保证内存中只有一个实例
d = D.getInstanceOfD();
}

}



public class B extends A {

}

public class C extends A {

}



public class E {
public void foo() {
B b = new B();
C c = new C();
}
}


在类D中,我使用了Singleton模式,以保证类D在内存中永远只有一个实例。
接着,我在类E的foo方法中分别实例化A的两个子类B、C。
现在的疑问是,B、C两个子类的对象b、c还会共同使用一个D的实例吗?
如果不是,该怎么实现呢?谢!
...全文
146 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
9CNR1 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 youlaiyouwang 的回复:]
不会出现楼主说的吧??
[/Quote]
哎...确实是自己弄错了。
youlaiyouwang 2010-01-12
  • 打赏
  • 举报
回复
不会出现楼主说的吧??
9CNR1 2010-01-12
  • 打赏
  • 举报
回复
另外,我把

protected static D d = null; // 定义D的一个对象

语句的protected改为private的时候,执行结果貌似:
d不止被实例化一次。
∵我对D使用了单例模式,
∴我怀疑出现“不止被实例化一次”的情况是否是由于d在A的子类对象b、c里是否有一份。
ZangXT 2010-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhoupo 的回复:]
问题是:子类是否会拷贝一份d到在自己的内存空间里?尽管对它们自己而言确实只有一份。
[/Quote]
不会。
9CNR1 2010-01-12
  • 打赏
  • 举报
回复
问题是:子类是否会拷贝一份d到在自己的内存空间里?尽管对它们自己而言确实只有一份。
garysoft 2010-01-12
  • 打赏
  • 举报
回复
是用同一个的d
maer56 2010-01-12
  • 打赏
  • 举报
回复
静态变量只初始化一次
b c 共同使用d
相关推荐
发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2010-01-12 01:41
社区公告
暂无公告