动手动脑03

1.

 

使用上页幻灯片中定义的类,以下代码输出结果是什么?

请依据代码的输出结果,自行总结Java字段初始化的规律。

运行结果

如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。

 

 2.

请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。

 

  1. 所有的静态初始化块都优先执行,其次才是非静态的初始化块和构造函数,它们的执行顺序是:
    1. 父类的静态初始化块
    2. 子类的静态初始化块
    3. 父类的初始化块
    4. 父类的构造函数
    5. 子类的初始化块
    6. 子类的构造函数

3.

以下代码为何无法通过编译?哪儿出错了?

如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

4.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

package test;

public class news {

    private String name;

    public news(String name)

    {

        this.name=name;

    }

    public static void main(String args[])

    {

        news s=new news("xiao ");

        news s2=new news("li");

        s.ask(s);

        s.ask(s2);

    }

    public static void ask(news s)

    {

    s.say();

    }

    public void say()

    {

    System.out.println(name);

    }

}

5

 

posted @ 2017-10-20 15:24  想不到8  阅读(127)  评论(0编辑  收藏  举报