我在父类中定义了一个数组:
import java.io.*;
public class Original extends PrintWriter {
protected char alphabet[] = {'z','a','e','t','h','l'};
}
在我的子类中,在类定义下,我正在做:
import java.io.*;
public class Child1 extends Original{
alphabet[0]='e';
alphabet[1]='b';
}
等...... 但这不是让我这样做的。
答案 0 :(得分:1)
在类中,您只能拥有代码块,方法或变量声明。您必须按照建议的其他答案更改您的代码。例如:
public class Parent {
protected char alphabet[] = {'a', 'b', 'd'};
}
public class Child extends Parent {
public Child(){
alphabet[2] = 'c';
}
}
答案 1 :(得分:1)
你的行语法错误。
当您访问它们时,您应该在任何方法或构造函数中编写它们。
如果你在方法的构造函数之外编写它们,那么编译器会将它们视为声明
import java.io.*;
public class Child1 extends Original{
alphabet[0]='e';
alphabet[1]='b';
}
应该是
protected Child(){
alphabet[0]='e';
alphabet[1]='b';
}
或Child
类的任何方法。
答案 2 :(得分:0)
这与继承无关。你的问题是你试图在类中和在任何允许的构造函数或方法之外调用裸露的方法。将该代码放在它所属的构造函数或方法中。
即改变这个:
import java.io.*;
public class Child1 extends Original{
// this can't go here!
alphabet[0]='e';
alphabet[1]='b';
}
到此:
import java.io.*;
public class Child1 extends Original{
public Child1() {
alphabet[0]='e';
alphabet[1]='b';
}
}
但我重申了我的意见,当您在将来遇到类似问题并需要我们的帮助时,请显示足够的代码以便我们能够理解问题,并始终请显示您的完整错误消息,你还没有做过的事。
答案 3 :(得分:0)
public class Child1 extends Original{
public void test(){
alphabet[0]='e';
alphabet[1]='b';
}
}
操作必须在方法或构造函数内部