java—当这个子类没有父类所需的参数时,如何让它拥有这个构造函数?

hzbexzde  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(317)

我很困惑。我的老师给了我们这个作业,并告诉我们,我们必须使用uml图到底是怎么回事,没有删除或添加类。好吧,我有我的类的所有要求,但它想让我有一个动物的孩子猎豹必须构造函数,一个有办法调用super(),一个没有。

public class Cheetah extends Animal
{

   private String name;
   private boolean isDangerous;
   private String food;
   private String soundsLike;

   public Cheetah(String n, boolean danger, String f, String sound)
   {
      this.name = n;
      this.isDangerous = danger;
      this.food = f;
      this.soundsLike = sound;
   }

   public Cheetah(String n, boolean danger, String f, String sound, double w, int a)
   {
      super(a, w);
      this.name = n;
      this.isDangerous = danger;
      this.food = f;
      this.soundsLike = sound;
   }
}

父类动物有这个构造函数,根据uml图,不允许有默认的构造函数。

public class Animal
{

   private int age;
   private double weight;
   private static int animalCount;

   public Animal(int age, double weight)
   {
      this.age = age;
      this.weight = weight;
   }
}

我一辈子都搞不懂如何在没有age和weight参数的情况下获得第一个cheetah构造函数进行编译,但是它不会使用参数how进行编译,因为超级参数age和weight不能在该构造函数中声明。我只想在动物中做一个无参数构造器,但我们不能。

ibrsph3r

ibrsph3r1#

这显然是你老师的设计错误;动物应该有一个实际的体重和年龄,而“呃,我不知道”不是被设计的系统应该处理的东西。显然如此:毕竟,如果这是问题的一部分,那么 Animal 类将有第二个构造函数不取任何值(它将年龄和权重设置为“我不知道”占位符),或者至少会有关于如何指定“不知道年龄”和“不知道权重”的文档,可能像包含。 public static final int NO_KNOWN_AGE = -1; 例如。
因此,你必须有一个年龄和体重,使动物。猎豹是一种动物,因此不可能在不知道年龄和体重的情况下制作一个新的猎豹示例。然而,(string,boolean,string,string)构造函数不包含这些值,这导致了这样的结论:这要么是你的老师的错误,要么,他们想看到你试图强加一个关于api设计的课程,这也许是一个创造性的教学方法,让你认识到这一点。
通过评论中的建议 0, 0 确实会导致您的代码编译,但它实际上是一个成功完成任务?没有人说在这里传递0和0是明智的。如果没有进一步的背景说明你做了一只0岁,0体重的猎豹:显然是不可能的。

相关问题