Java基础-构造函数

package com.base;

/**  * 构造函数测试类  * @author luyl  * @since 2012-03-15  */

public class ConstructorTest {  {   System.out.println("***" + "按照顺序,先执行构造代码块1");   System.out.println("***" + this.age);   System.out.println("***" + this.name);  }    //单句代码在此报错,需要放到代码块中,即成为构造代码块  //System.out.println("***" + this.age);    private int age;  private String name;    private ConstructorTest(int age, String name){   this.age = age;   this.name = name;   System.out.println("最后执行构造函数");  }    {   System.out.println("再执行构造代码块2!");   System.out.println(this.age);   System.out.println(this.name);   this.age = 3;   this.name = "haha";   System.out.println(this.age);   System.out.println(this.name);  }

 /**   * @param args   */  public static void main(String[] args)  {   ConstructorTest c = new ConstructorTest(15, "xiaoming");   System.out.println(c.age);   System.out.println(c.name);

 }

} /*执行结果如下: ***按照顺序,先执行构造代码块1 ***0 ***null 再执行构造代码块2! 0 null 3 haha 最后执行构造函数 15 xiaoming */

/**  * 说明问题:  * 1.创建一个对象时自动调用构造函数。  *   但是该构造函数需要是public的,否则无法通过new去生成对象;  *   除非像本类测试也在一个类中,如果在另一个类中去new ConstructorTest就是错误的,权限不可见。  *   这样说明了另一个问题:java的修饰符:private只能在本类中才能访问。  *   friendly(default)同一个包,protected子类,public所有。  *   (如果没有显示定义的构造函数,java会自动生成一个默认构造函数)  *    *  2.构造函数和构造块的执行顺序:  *  new一个对象的顺序  *    先初始化该对象,但是所有属性此时默认为相应类型的默认值。int 0,String null。  *    然后执行构造代码块  *    最后执行构造函数  */

 

有一个很好的文章:http://blog.csdn.net/chriscbz/article/details/4459733

 

你可能感兴趣的:(java,c,String,测试,null,Class)