我有这种情况
public class A {
public action() {
System.out.println("Action done in A");
}
}
public class B extends A {
public action() {
System.out.println("Action done in B");
}
}
Run Code Online (Sandbox Code Playgroud)
当我创建一个B实例时,该动作将只执行B中的动作,因为它会覆盖超类的动作.
问题是在我的项目中,超类A已经被使用了太多次,我正在寻找一种方式,在某些条件下,当我创建一个A的实例时,它会进行检查,如果是真的,则替换自己与B.
public class A {
public A() {
if ([condition]) {
this = new B();
}
}
public action() {
System.out.println("Action done in A");
}
}
A a = new A();
a.action();
// expect to see "Action done in B"...
Run Code Online (Sandbox Code Playgroud)
这在某种程度上是可能的吗?