类与对象课后题

1.进行试验以下代码输出结果是什么?

package test;

class InitializeBlockClass{

    {

        field=200;

        }

    public int field=100;

    public InitializeBlockClass(int value)

    {

        this.field=value;

     }

    public InitializeBlockClass(){}

}

public class Test {

    public static void main(String[] args) {

        // TODO Auto-generated method stub 

        InitializeBlockClass obj=new InitializeBlockClass();

        System.out.println(obj.field);

        obj=new InitializeBlockClass(300);

           

    }

}

运行结果:

Java字段初始化的规律:所有类的变量都默认初始化null,数字类的原始数据类型默认初始化为0,执行类的成员定义的默认值或类的初始化块,到底执行哪个要看哪一个排在前面。类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

2. 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行,请自行编写示例代码验证以上结论。

代码:

class A

{

    static

    {

    System.out.println("A的静态初始化块");

    }

}

class B extends A

{

    static

    {

    System.out.println("B的静态初始化块");

    }

}

class C extends B

{

    static

    {

    System.out.println("C的静态初始化块");

    }

}

public class Test {

    public static void main(String[] args) {

        // TODO Auto-generated method stub 

        new C();

    }

}

运行截图:

3.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加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);

    }

}

截图:

4.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?

代码:

package test;

class Number

{

       static int count;

         public Number()

             {

                 count++;

             }

         int  GetCount()

            {

                return count;

            }

}

public class Test {

    public static void main(String[] args) {

        // TODO Auto-generated method stub 

    Number n1=new Number();

    Number n2=new Number();

    Number n3=new Number();

    System.out.println("你已经创建了"+Number.count+"对象");

    }

}

结果截图:

原文地址:https://www.cnblogs.com/chenpengmeng/p/4888389.html