我正在学习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;
}
}
答案 0 :(得分:0)
在BigAnimal
的构造函数中,更改
super(n,m);
到
super(name, meals)
即,将给定BigAnimal
构造函数的值传递给超类构造函数。
另外,修复你的bug(?)并给超类提供一个只有两个参数的构造函数,或者将第三个参数传递给你已经得到的构造函数。如,
super(name, meals, doesitbite)