how to copy SubClass object in BaseClass copy constructor

巧了我就是萌 提交于 2019-12-02 12:53:37
qqilihq

It's not possible. A constructor of class A gives you an instance of A, no way to circumvent this. Why not instantiate the subclass explicitly?

Another possibility might involve a static factory method like:

public static BaseClass create(BaseClass input) {
       // return BaseClass or subclass
}

It seems like you want the object of BaseClass to be an instance of SubClass which extends BaseClass.

Is it even possible?

-No. It is not possible.

The instanceof operator returns true if the variable on left side satisfies IS-A condition of the variable or class on the left side.

The SubClass IS-A BaseClass since it extends BaseClass. But the BaseClass can never be a SubClass, since it can't extend SubClass.

You seems to be having a design upside-down. If you need to do what you are asking then you need to re-think over your design. Ideally in your subclass constructor, you should be copying or initializing the base class properties by calling super().

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!