正确地扩展我的课程

时间:2016-01-10 22:17:17

标签: java constructor extends

我使用的是Animal类。它的构造函数将name作为参数。

public class Animal {
    String name;
    public Animal(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
         Animal cow = new Animal("Cow");
         Humain pierre = new Humain("Pierre", true);
    }
}

和一个从Animal延伸的人类。它的构造函数取名为&一个布尔值作为参数。

public class Humain extends Animal{
    boolean isIntelligent;

    public Humain(String name, boolean isIntelligent) {
        this.name = name;
        this.isIntelligent = isIntelligent;
    }

}

为什么我在IDE(netbean)中收到此错误消息:"类Animal中的构造函数Animal无法应用于给定类型" ?我觉得我错过了类扩展和构造函数。

3 个答案:

答案 0 :(得分:1)

你需要在类Human的构造函数中调用super。代码:

public class Humain extends Animal{
    boolean isIntelligent;

    public Humain(String name, boolean isIntelligent) {
        super(name);

        this.isIntelligent = isIntelligent;
    }

}

答案 1 :(得分:0)

当你有一个带参数的构造函数时,在使用B中的参数创建构造函数时,你需要传入一个参数为super()

示例:

class A {
    public A(int x) {   }
  }

  class B extends A {
    public B(int x ) 
    {
       super(x); // need to specify the parameter for class A
       //... 
    }
  }

在你的情况下它应该是:

public Humain(String name, boolean isIntelligent) {
      super(name);

      this.isIntelligent = isIntelligent;
  }

答案 2 :(得分:-1)

试试这个:

public class Humain extends Animal{
  boolean isIntelligent;

  public Humain(String name, boolean isIntelligent) {
      super(name);
      this.isIntelligent = isIntelligent;
  }
}