gpt4 book ai didi

java - 从父类(super class)的构造函数调用子类的构造函数

转载 作者:行者123 更新时间:2023-11-30 02:04:19 25 4
gpt4 key购买 nike

我有一个“动物”类和“动物”的一些子类(“猫”,“狗”,...)。 Animal 有一个 protected 构造函数,所有子类都有一个默认构造函数和一个复制构造函数。

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

为此,我编写了一个函数,您可以将列表传递给深度复制,它会设置列表中所有元素的循环,并通过使用复制构造函数,将列表中的所有元素添加到新列表中。旧列表。

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

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

最佳答案

你的方法是错误的。

良好的 OOP 的整体思想是父类(super class)对子类一无所知。 Oop 是为了能够添加更多子类,而无需触及代码的任何其他部分,包括父类。

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

这样你以后就可以在不知道动物具体类别的情况下克隆动物!

关于java - 从父类(super class)的构造函数调用子类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51799203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com