Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当这个子类没有';没有父类需要的参数吗?_Java_Constructor - Fatal编程技术网

Java 当这个子类没有';没有父类需要的参数吗?

Java 当这个子类没有';没有父类需要的参数吗?,java,constructor,Java,Constructor,我很困惑。我的老师给了我们这个作业,告诉我们必须准确地使用uml图,不能删除或添加类。我有我的类的所有要求,但它想让我有一个动物的孩子,必须有构造函数,一个有方法调用super(),另一个没有 public class Cheetah extends Animal { private String name; private boolean isDangerous; private String food; private String soundsLike;

我很困惑。我的老师给了我们这个作业,告诉我们必须准确地使用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;
   }
}
在我的一生中,我无法弄清楚如何在没有年龄和权重参数的情况下获得第一个cheetah构造函数进行编译,但它不会使用该参数进行编译,因为超级参数年龄和权重不能在该构造函数中声明。我只想在animal中创建一个无参数构造函数,但我们不允许这样做。
这显然是你老师的设计错误;动物应该有一个实际的体重和年龄,而“呃,我不知道”不是被设计的系统应该处理的东西。显然是这样的:毕竟,如果这是问题的一部分,那么提供的
Animal
类将有第二个构造函数不取任何值(它将年龄和体重设置为“我不知道”占位符),或者至少会有关于如何指定“不知道年龄”和“不知道体重”的文档,可能与包含一样简单,例如
公共静态final int NO_KNOWN_AGE=-1例如

因此,你必须有年龄和体重才能成为动物。猎豹是一种动物,因此在不知道年龄和体重的情况下,不可能创建一个新的猎豹实例。然而,(字符串,布尔值,字符串,字符串)构造器没有包含这些值,这导致了这样的结论:这要么是你的老师的错误,要么是他们想看到你挣扎着试图给API设计上一课,这也许是一种创造性的教育方式,让你认识到这些东西


通过
0,0
注释中的建议确实会导致您的代码编译,但它实际上是成功完成作业吗?没有人说在这里传递0和0是明智的。如果没有进一步的上下文说明您已经制作了一只0岁、0体重的猎豹:显然这是不可能的。

只需将(0,0)从不接受这些参数的猎豹ctor传递给超类构造函数即可。谢谢。我已经盯着我的代码看了2个小时,尝试了不同的东西。我不知道为什么我没有想到这么简单的事情。谢谢@IanKempNo问题!顺便说一句,我不知道这是否正是你的老师想要的——我会和他/她确认这一点。(这可能是他们的错误,或者他们可能完全想要别的东西。)