无论出于何种原因,编译器都在说我将符号误认为是...正确的符号?
例如,如果您将javascript数组与java数组弄错了,我曾经见过这种类型的错误,但是会给出类似的错误,但是它会说这两个符号是混合匹配的。
int[] pi_digits = [3, 1, 4, 1, 5];
//Should be int[] pi_digits = {3, 1, 4, 1, 5};
错误是:
Syntax error on token "[", { expected after this token
我已经尝试过(我认为是)最明显的解决方案-我已经完全从第二堂课中删除了花括号(幸运的是,这没有用),并且我还尝试将它们放在同一堂课中,也有同样的问题
我尝试的第三件事几乎解决了这个问题。无论出于何种原因,添加第二组花括号都可以解决编译器的问题,但是在运行时,实际上没有代码被编译,并且名称和描述均返回null。
FirstClass文件:
package p;
abstract class FirstClass {
String name;
String description;
...
}
SecondClass文件:
package p;
public class SecondClass extends FirstClass { //Error 1 here
Name = " ... ";
Description = " ... ";
...
} //Error 2 here
错误1:“令牌“ {”的语法错误,{预期在此令牌之后”
错误2:“令牌“}”的语法错误,此令牌后应有}”
我不知道出了什么问题,特别是因为它说它应该具有的符号就是被检测到的那个符号。
答案 0 :(得分:3)
我认为,您的变量初始化错误 您不能像上面所做的那样初始化类中的父变量。您可以创建一个方法,然后可以在方法内部初始化父变量,并在创建对象后调用该方法。 或者,您可以在构造函数中初始化父变量,当创建B类型的对象时,该父变量将自动初始化。
Class A{
String a;
String b;
}
Class B extends A{
public B(){
a = "some name";
b = " second name";
}
public initByMethod(){
a= " good";
b= "bad";
}
}
//Inside the main method
B object =new B();
System.out.println(object.a);//"some name"
当您打印b.a时,它将给出“某些名称”作为输出。 调用如下所示的方法后,您将调用,您将获得“好”作为输出
Inside the main method
object.initByMethod();
System.out.println(object.a);// " good"
这可能对您有帮助
答案 1 :(得分:1)
第二个类出现问题的地方是您省略了类级变量中的数据类型。
package p;
public class SecondClass extends FirstClass {
String name = " ... "; // Added data type 'String'
String description = " ... "; // Added data type 'String'
}
请注意,这不一定覆盖字段name
和description
。可以在另一个子类中用其他数据类型重新声明这些字段:
package p;
public class ThirdClass extends FirstClass {
int name = 5;
int description = 6;
}