public class Base
{
private int a=init("init a");
private static int b=init("init b");
public Base()
{
System.out.println("init Base");
}
public void init(String str)
{
System.out.println(str);
}
}
public class Child extends Base
{
private int x=init("init x");
private static int y=init("init y");
public Child()
{
System.out.println("init child");
}
}
privateinta=init("init a");
privatestaticintb=init("init b");
private int x = init("init x");
private static int y = init("init y");
这四句会出现编译错误,因为init()这个方法返回值为空。
错误二:
把init()方法返回一个int,还是报编译错误,错误原因:非静态方法给静态变量赋值,静态变量随类的存在而存在,而非静态方法在类加载的时候还不能使用,所以报错。
如果把init()方法设置为静态方法,并且有返回值,那么输出结果应该是:
init b:父类的静态变量
init y:子类的静态变量
init a:父类的成员变量
init Base:父类的构造函数
init x:子类的成员变量
init Child:子类的构造函数 |
|