如何编写一个类的构造函数?

时间:2018-08-15 12:51:45

标签: java constructor

已经给我一个类声明,我正在尝试编写Pet类的构造函数。

class Pet {
  protected String name;
  protected boolean indoor;
  ...
  public String getName() { return name; }
  public boolean getIndoor() { return indoor; }
  }
class Goat extends Pet{
  public int age;
  public String diet;
  public Goat(String name, boolean indoor, int age, String diet) {
    super(name, indoor);
    this.age = age;
    this.diet = diet;
  }
}

,具有以下要求的测试: enter image description here

这是我到目前为止所写的内容,但被困在了路上。

  class Pet {
  public String name;
  public boolean indoor;
  public Pet(String a, boolean b){
      name = a;
      indoor = b;
  }
}

这是我在执行时遇到的以下错误。 enter image description here

  • 更新的代码和错误消息

要使代码在该类中正常工作,哪个步骤好? 任何帮助将非常感激。谢谢。

2 个答案:

答案 0 :(得分:3)

更改实例变量名称以匹配您引用它们的方式(实际上,将内容放回以前的方式):

class Pet {
  protected String name;
  protected boolean indoor;
  public Pet(String a, boolean b){
      name = a;  // <-- assigns the argument to the instance variable
      indoor = b;
  }

  public String getName() { return name; }
  public boolean getIndoor() { return indoor; }
}

当您看到以get为前缀的名称是访问器(或getter)时,它们就是getName和getIndoor方法。吸气剂仅用于访问,不能更改,因此getName = a不起作用。

答案 1 :(得分:0)

您的Pet类构造函数应如下所示:

 class Pet {
      private String name;
      private boolean indoor;
      public Pet(String name, boolean indoor){
          this.name = name;  
          this.indoor = indoor;
      }

      public String getName() { return name; }
      public boolean getIndoor() { return indoor; }
    }