gpt4 book ai didi

java - 作文课;使用 super 还是子?

转载 作者:行者123 更新时间:2023-12-02 04:56:50 24 4
gpt4 key购买 nike

让我们考虑两个类,SuperClass 和扩展它的 SubClass:

Class SuperClass{
int superDataMember;
}

Class SubClass extends SuperClass{
int subDataMember;
}

我需要另一个 CompositeClass 类,它可以根据某些条件使用 super 或子组合。我的问题是:我应该使用

  1. CompositeClass 内的 SuperClass 实例

    • 因此,我可以使用 SuperClass 实例或 SubClass 实例。
    • 但是,如果访问的实例属于 SuperClass,则访问 subDataMember 的方法将如何表现?
    • 也许 instanceOf 检查可以在每个方法的开头起作用?

      Class CompositeClass {
      private SuperClass sc;

      public getSuperDataMember () {// some code}
      public getSubDataMember () {
      if (this.sc instanceOf SubClass)
      // some code
      }
      }
  2. CompositeClass 内的 SubClass 实例

    • 因此,我将失去访问 SuperClass 实例的能力!

      Class CompositeClass {
      private SubClass sc;

      public getSuperDataMember () {// some code}
      public getSubDataMember () {// some code
      }
      }
  3. 实现两个版本的 CompositeClass,第一个是带有 SuperClass 实例的 SuperCompositeClass,第二个是 SubCompositeClass 使用 SubClass 实例扩展第一个!

最佳答案

请注意,SubClass也是一个SuperClass,因此您不会像您指出的那样失去作为SuperClass访问组件的能力出来。

此外还有第三个选项,使用参数多态性:

class CompositeClass<T extends SuperClass>
{
private T component;
...
}

以便您可以根据具体情况进行调整。如果 SuperClass 接口(interface)未提供,这将要求您重写其他方法。

关于java - 作文课;使用 super 还是子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684721/

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