l类与对象课后作业

 java 的初始化规律

执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

执行类的构造函数。

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”

当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

请自行编写示例代码验证以上结论。

public class InitializeBlockDemo {

 /**   * @param args   */

      public static void main(String[] args) {      

          InitializeBlockClass obj=new InitializeBlockClass();  

           System.out.println(obj.field);      

           obj=new InitializeBlockClass(300);   

          System.out.println(obj.field);  

      }

}

class InitializeBlockClass{  

//下面这句在初始化块之前与之后,会影响到field字段的初始值  //

        public int field=100;  

       {    

            field=200;

      }  

       public int field=100;

       public InitializeBlockClass(int value)

      {  

          this.field=value;

      }

     public InitializeBlockClass(){     

     }

}

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

 

静态初始化块只执行一次。

创建子类型的对象时,也会导致父类型的静态初始化块的执行。

 

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

请编写代码验证你的想法。(发表到博客)

public class Ex

{ int i =123; static int Temp;

public static void A()

{ System.out.println(Temp);

} public int B()

{ int x = 100;

return x; }

public static void main(String args[]) {

Ex e = new Ex();

Temp = e.B();

e.A();

}

}

1. 父类static(顺序按照代码书写顺序进行)
2. 子类static(顺序按照代码书写顺序进行)
3. 父类非static域、构造器(顺序按照代码书写顺序进行)
4. 子类非static域、构造器(顺序按照代码书写顺序进行)

 3

public class StaticTest {

     public static void main(String args [])

    {

       test b=new test();   b.print();  

   }

}

class test {  

   int i=1;   

  static void print()    

  {       

       test a=new test();  

       System.out.println(a.i);  

   }

}

 4

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

public class Student{

public static void main(String[] args){

Information a = new Information();

a.OutputInformation();

Information b = new Information();

b.OutputInformation();

} }

class Information{

static int num=0;

Information()

{ num++;

}

public void OutputInformation()

 {

System.out.println("你已经创建了"+num+"个对象!");

}

}

 

posted @ 2015-10-16 21:42  beifangderen  阅读(163)  评论(0编辑  收藏  举报