小编ram*_*ope的帖子

Java:Superclass在某些条件下构造子类,可能吗?

我有这种情况

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)

这在某种程度上是可能的吗?

java subclass superclass

7
推荐指数
2
解决办法
6359
查看次数

标签 统计

java ×1

subclass ×1

superclass ×1