A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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:子类的构造函数

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马