1 /* 构造代码块虽然实际开发很少见,但是在面试的笔试中可能会遇到,所以记录一下 */ class PersonDemo2 2 { 3 public static void main(String[] args) 4 { 5 Person p1=new Person(); 6 7 Person p2=new Person("张三"); 8 9 Person p3=new Person("王五",20);10 //p3.cry();11 }12 }13 class Person14 {15 16 private int age;17 private String name;18 19 /*20 构造代码块(定义不同对象的相同的初始化内容)21 1.作用:给对象进行初始化22 2.对象建立时执行,每次创建对象都会被调用,并且在构造函数之前执行23 3.与构造函数的区别:给不同对象进行统一初始化,而构造函数是对对应的对象进行初始化。24 */25 {26 //System.out.println("Person class run!");27 cry();28 }29 30 /*31 构造函数:32 1.构造函数在新建对象时调用33 2.构造函数无返回类型34 3.如果没有定义构造函数,则系统自动定义一个无参构造函数,如果有定义构造函数,则不会自动定义35 4.构造函数一般用于初始化成员,只调用一次,普通函数可以通过新建的对象多次重复调用36 */37 Person() //无参构造函数38 {39 System.out.println("A: name:"+name+","+"age:"+age);40 //cry();41 }42 Person(String n) //一个参数构造函数43 {44 name=n;45 System.out.println("B: name:"+name+","+"age:"+age);46 //cry();47 }48 Person(String n,int a) //两个参数构造函数49 {50 name=n;51 age=a;52 System.out.println("C: name:"+name+","+"age:"+age);53 //cry();54 }55 void cry() //普通函数56 {57 System.out.println("cry.........");58 }59 }
输出结果:
cry.........
A: name:null,age:0cry.........B: name:张三,age:0cry.........C: name:王五,age:20