繁体   English   中英

从超类的构造函数中调用子类的构造函数

[英]Calling constructor of subclass from constructor of superclass

我有一个“动物”类和“动物”的一些子类(“猫”,“狗”等)。 Animal具有受保护的构造函数,所有子类均具有默认构造函数和copy构造函数。

在程序的某个点上,我有一个“动物”列表,我想将此列表深复制到另一个“动物”列表中(我的意思是不仅要复制列表本身,还要复制其中的所有对象)。

为此,我编写了一个函数,您可以在其中传递列表以进行深层复制,它建立了列表中所有元素的循环,并通过使用复制构造函数将旧列表中的所有元素添加到了新列表中。

问题是,为了调用正确的副本构造函数,我必须通过if ... instanceof找出“动物”的类型。 如果我没有'Animal'的子类,这不是一个大问题,但是我更愿意在'Animal'类中创建一些复制构造函数,这些构造函数根据传入的参数的类型调用正确的子类构造函数。

但是我在线阅读这是不可能的。 这是真的? 如果是这样,除了我正在使用的if ... instanceof方法之外,还有其他方法吗?

您的方法是错误的。

好的OOP的全部思想是,超类对子类一无所知。 Oop即将能够添加更多的子类,而无需触摸代码的任何其他部分,包括父类。

而是在基类上有一个抽象方法deepCopy,并让每个子类实现该方法。

这样您以后就可以克隆动物而无需了解它们的具体类别!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM