超级错误。在JAVA

时间:2017-05-01 16:13:04

标签: java

我正在学习JAVA,目前我在使用super方面遇到了问题。 由于某种原因,它显示错误:

  

线程“main”中的异常java.lang.Error:未解析的编译   问题:字段Animal.n不可见字段Animal.m是   不可见*

我该如何解决?我意识到String n和int m被设置为private,因为我正在尝试使用“super”。先感谢您。我遇到问题的部分代码是“super(n,m)

public class Zoo 

{

public static void main(String[] args)
  {
    Animal[] cat= new Animal[5];
    BigAnimal big = new BigAnimal("Roro",20,true,true);

    cat[0] = new Animal ("Mauie",5,true);
    cat[1] = new Animal ("Frankie",7,false);
    cat[2] = new Animal ("Zo-Zo",8,false);
    cat[3]=  new Animal ("Alice",12,true);
    cat[4]= big;

    System.out.println(cat[0].getName());
    System.out.println(cat[0].something(10));

  }



}

class Animal

{

    private String n;
    private int m;


    public Animal(String name,int meals, boolean doesitbite)

    {
        n=name;
        m=meals;
    }

}

class BigAnimal extends Animal

{
     boolean doesitlove;

     public BigAnimal (String name, int meals, boolean doesitbite, boolean doesitlove) 
        {

            super(n,m);
            doesitlove=true;
        }

}

1 个答案:

答案 0 :(得分:0)

BigAnimal的构造函数中,更改

super(n,m);

super(name, meals)

即,将给定BigAnimal构造函数的值传递给超类构造函数。

另外,修复你的bug(?)并给超类提供一个只有两个参数的构造函数,或者将第三个参数传递给你已经得到的构造函数。如,

super(name, meals, doesitbite)