黑马程序员技术交流社区

标题: 写出调用 new Child()程序运行的结果 [打印本页]

作者: 壊亊唑侭    时间: 2015-8-24 20:34
标题: 写出调用 new Child()程序运行的结果

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2