当前位置: 首页 > 知识库问答 >
问题:

如何在超类方法中使用子类参数?

靳富
2023-03-14

我有一个名为Player的超级类,我有3个子类,分别是Young HustlerStudentThe Herbalist

在每个子类中,我都有私有参数金钱存储大小连接

我想在 Player 类中创建一个名为 sellWeed() 的方法,该方法从 stashSize 中删除 1 并将 10 添加到金钱中,以便我可以在 main 方法中调用它们时将该方法应用于所有子类。但是如何将私有参数从子类获取到超类中呢?

我不能在超类中声明它们,因为每个子类都有自己的默认启动参数,这些参数应该在游戏期间进行。

共有1个答案

蒋星雨
2023-03-14

这样的方法应该有效:

class Player {
  protected int money;
  protected int stashSize;
  // and the connections parameter too...
  public Player(int money, int stashSize) {
    this.money = money;
    this.stashSize = stashSize;
  }
  public void sellWeed() {
    // work with money and stashSize here
  }
}

class Student extends Player {
  public Student() {
    super(0, 10); // no money and stashSize 10 for student
  }
}

想法是将私有参数移动到超类中。然后,您可以通过将值传递给超级构造函数(super())来初始化它们。

 类似资料:
  • 下面是解释我的情况的基本框架代码。 这是超级抽象类: 这是超级抽象类的一个子类:(注意,我删除了其他函数,比如构造函数和方法,以缩短文章的篇幅 我想在抽象类中使用这种公共无效支付(int金额)方法;然而,超级抽象类Person不会接受支付(付款),因为该方法不在范围内。如何使这个工作? 谢谢~

  • 我有一个名为User的抽象类和一个扩展User的子类。User类包含一个方法:受保护的抽象空setId(String newId){}:它在User类中设置一个私有变量id。所以我的问题是,当我去创建setId()方法时,如果User类中的id是私有的,我如何引用它?据我所知,id变量不能被设置为受保护的。感谢任何能帮忙的人!

  • 我有一个抽象超类和两个非抽象子类和。如何在超类方法中定义类型,如下所示 我允许在子类方法中编写具体类型(例如,或) 在上面的示例中,子类方法不会覆盖超类方法。

  • 我正在学习java入门课程,我们刚刚开始学习继承。我正在做一项任务,要求我们创建一个具有名称和年龄的“Pet”超类;和三个子类,每个都有自己独特的特征(我选择了“狗”、“猫”和“鸟”)。在我们构建了所有这些之后,我们将创建一个主类来测试一切,这就是我遇到问题的地方。我试图为这些独特的特性调用

  • 问题内容: 我对Java中的多态性有基本的疑问。我已经在一个名为AnimalTestDrive.java的文件中编写了以下代码。根据我的说法,以下代码应专门以粗体显示该行,但不幸的是,它不能。您能否解释为什么,我给出了以下错误: 问题答案: 让我们尝试以与编译器相同的方式查看此行: 首先,它需要弄清楚是什么意思。很好而且很容易-它是当前方法中的局部变量,因此它不需要花很多时间。 该变量的编译时类型

  • 问题内容: 我正在使用具有3级类继承的代码。从最低级别的派生类开始,调用方法2向上层级的语法是什么,例如super.super调用?“中间”类未实现我需要调用的方法。 问题答案: 好吧,这是一种实现方式: 也许不是您想要的东西,但这是最好的python,除非我弄错了。您要问的内容听起来是反Python的,您必须解释为什么要这么做,以便我们为您提供快乐的python做事方式。 另一个示例,也许是您想