gpt4 book ai didi

java - 我们怎样才能摆脱不必要的继承呢?

转载 作者:行者123 更新时间:2023-12-03 21:27:28 24 4
gpt4 key购买 nike

我在完成的采访中遇到了一个问题,我无法得到正确的答案。

假设我们有 3 个类,Base,Derivate1 和 Derivate 2,它们的关系如下所示

public class Base {...}

public class Derivate1 extends Base {...}

public class Derivate2 extends Derivate1 {...}

然后我们发现Derivate1和Derivate2对于我们的程序来说不是必需的,但是它们的方法实现是有用的。那么,我们怎样才能摆脱 Derivate1 和 Derivate2 而仍然保留它们的方法呢?在这种情况下,我们期望用户不能创建 Derivate1 和 Derivate2 的新实例,但他们仍然可以使用 Derivate1 和 Derivate2 中的方法实现。当然,我们可以更改 Base 类中的代码。

您对此有何看法?您能说出他们实际上在问什么吗?

非常感谢。

附言。

当我讨论它们时,我的面试官有一些提示。

  • 派生类来自第三方。它们设计得很糟糕,所以我们不希望我们的客户使用它们,这意味着用户不应该允许从派生类创建实例。

  • 派生类包含对基类有用的覆盖方法,我们可以在基类中创建具有不同名称的方法来实现派生类中那些有用的行为。

感谢您提供所有这些有趣的答案...

最佳答案

简单重构:

  1. Derivate1Derivate2 中的所有代码复制到 Base 中。
  2. 删除 Derivate1Derivate2
  3. 确保没有遗漏引用(如果您已经将指向Derivate 对象的指针作为Base,那么您应该很好)
  4. 编译
  5. ??????
  6. 利润!

即使您在层次结构中有更多的子类,例如 Derivate3Derivate4,让它们扩展 Base 应该没有问题。

关于java - 我们怎样才能摆脱不必要的继承呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091610/

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