当前位置: 首页 > 面试题库 >

如何在BaseClass复制构造函数中复制SubClass对象

白浩气
2023-03-14
问题内容

我想在BaseClass构造函数中复制SubClass对象。我需要以下代码正确执行。

class BaseClass{
    BaseClass() {}
    BaseClass(BaseClass base) {
        //TODO: how to implement?
    }
}

class SubClass extends BaseClass {    
   SubClass() {}
}

public class Test {
    public static void main(String[] args) {

        BaseClass sub = new SubClass();
        BaseClass subCopy = new BaseClass(sub);
        if (subCopy instanceof SubClass) {
            // need to be true
        }
    }
}

可能吗?如果可以,我该怎么办?其他如何获得类似的效果?


问题答案:

这是不可能的。类A的构造函数为您提供了A的实例,无法绕开它。为什么不显式实例化子类?

另一种可能性可能涉及静态工厂方法,例如:

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


 类似资料:
  • 问题内容: python中是否有复制构造函数?如果没有,我将怎么做才能达到类似的目的? 情况是,我正在使用一个库,并且在其中扩展了其中一个类,并提供了额外的功能,我希望能够将从库中获得的对象转换为自己的类的实例。 问题答案: 我想你想要复制模块 您可以像控制泡菜一样控制复印。

  • copy constructor是一个构造函数,它通过使用先前创建的同一类的对象初始化它来创建对象。 复制构造函数用于 - 从另一个相同类型的对象初始化。 复制对象以将其作为参数传递给函数。 复制对象以从函数返回它。 如果没有在类中定义复制构造函数,则编译器本身定义一个。如果该类具有指针变量并具有一些动态内存分配,则必须具有复制构造函数。 这里显示了最常见的复制构造函数形式 - classname

  • 主要内容:默认拷贝构造函数拷贝和复制是一个意思,对应的英文单词都是 。 对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。 在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对

  • 问题内容: 我在Swift操场上有以下示例,试图在Swift中实现一个副本构造函数: 问题在于这实际上并不能以当前形式进行编译。在子类中的 方法上,报告此错误: 如果它不是 构造函数 ,就好比是常规的,那么这个问题 就很有意义 了,您可以传递超类中期望的类型,但在子类中已重写该类型以限制更多: __ 但是事实是它是 构造函数 ,这使我相信我应该能够重写它并提供不同的方法签名,因为在编译时绝对知道对

  • 我有以下代码: 我要复制的类: 创建一些类 公共对象createObj(String cls\u name,String param1,int param2){返回Class.forName(cls\u name)。getConstructor(String.Class,Integer.Class)。newInstance(param1,param2);} 然后我尝试使用以下内容复制该类的对象:

  • 有人告诉我构造函数复制是一种浅层复制方法。 通常情况下,如果我修改了List ints的第一个元素,那么List intscope中的相应元素应该已经修改为31了,对吗?因为变量intscope和ints引用了同一个对象,但我得到了这个输出。 举个例子,我的意思是: 我得到这样的输出: 因为变量arr和arr2引用了同一个对象。如果我修改了数组中的一个元素,那么其他元素也会产生影响。当我使用列表进