伪代码:
public abstract class P {
protected String data = null;
}
public class A extends P {
public static void main(){
data = "hello";
}
}
public class B extends P {
public static void main(){
system.out.println(data);
// 这里想输出 父类P中data成员变量更改后的值 hello
}
}
伪代码如上,想在子类B中输出父类P的成员变量data被更改后的值(即,hello),该如何改造。
约束:A和B在实际中是分属于不同的业务类,所以不允许有继承关系
------解决方案--------------------
综合各位看官的说法,解决这个问题的方法有两种:
1、单例模式,class P这个类保留构造器,仅提供get实例的方法;
2、将要共享的变量声明为static。
如果要共享同一数据,只有让其在内存中存在唯一一份,或者多份之间同步。上述两种方法都保证了数据在内存中仅存在一份。
------解决方案--------------------
如果你一定需要这么别扭的实现。。那么看这个例子
public class ClassTest {
public static void main(String[] args) {
new A();
new B();
}
}
abstract class P {
protected static String data;
}
class A extends P {
A() {
P.data = "Hello";
}
}
class B extends P {
B() {
System.out.println(P.data);
}
}