不知道为什么我得到这个语法错误
问题描述:
不知道为什么,但我得到了第一个大括号的语法错误,它说我需要在第一个变量声明后添加一个大括号。不知道为什么我得到这个语法错误
public class DogNeeds extends PetNeeds {
super.setAnimalType("dog"); //This method is inherited from PetNeeds superclass
protected boolean walk;
public DogNeeds(String name) {
super(name);
// TODO Auto-generated constructor stub
}
boolean getWalk() {
return walk;
}
void setWalk(boolean walk) {
this.walk = walk;
}
public void walkDog() {
if(walk) {
System.out.println("Time to walk " + super.getName());
}
else {
System.out.println(super.getName() + " doesn't need to go out yet.");
}
}
}
答
这条线:
super.setAnimalType("dog"); //This method is inherited from PetNeeds superclass
必须是一个方法或构造内部。
答
super.setAnimalType("dog")
不能在方法之外。您可以将其添加到任何方法或重写方法。例如:
public class DogNeeds extends PetNeeds {
protected boolean walk;
public DogNeeds(String name) {
super(name);
// TODO Auto-generated constructor stub
}
void setAnimalType(String animal) {
super.setAnimalType(animal);
}
boolean getWalk() {
return walk;
}
void setWalk(boolean walk) {
this.walk = walk;
}
public void walkDog() {
if(walk) {
System.out.println("Time to walk " + super.getName());
}
else {
System.out.println(super.getName() + " doesn't need to go out
yet.");
}
}
}
答
super.setAnimalType("dog");
当你调用这样的方法,它应该走自己的方法内。由于它不是任何类型的声明,因此应该在函数/方法的某个地方执行。
P.S.我今天早上实际上犯了一个类似的错误,很傻。
在方法中放置'super.setAnimalType'语句 – Reimeus
在方法,构造函数或初始化程序块之外不能有像'super.setAnimalType(“dog”)''这样的行。 –