构造函数
构造函数的特点
1. 函数名与类名相同
2. 不用定义返回值类型(和void有区别,void代表没有具体结果返回的情况,而构造函数根本不需要定义返回值类型
3. 不可以
写return语句。
4. 対象一建立,就会调用与之对应的构造函数。
5. 构造函数也是函数的一种,有一也可以进行函数的重载。
构造函数的作用:
- 可以用于给对象进行初始化
注意:当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数,否则对象无法建立。
构造函数与一般函数的异同:
- 构造函数是在对象一建立就运行,只运行一次,一般方法可以运行多次。
什么时候写构造函数:
- 当分析事物时,该事物一存在就具备一些特性或行为,那么将这些内容定义在构造函数之中
构造函数之间相互调用
用
this()
,且必须放在构造函数的第一行。(因为越详细的初始化越在前面)person(String n){ //结构函数的重载 name = n; } person(String n,int a){ //结构函数的重载 this(n); //结构函数之间调用,调用person(String n) age = a; }
示例代码
class person{
private String name;
private int age;
person(){ //结构函数
System.out.println("A:name="+name+",age="+age);
cry();
}
person(String n){ //结构函数的重载
name = n;
System.out.println("B:name="+name+",age="+age);
cry();
}
person(String n,int a){ //结构函数的重载
name = n;
age = a;
System.out.println("C:name="+name+",age="+age);
cry();
}
public void cry(){
System.out.println("cry...");
}
}
public class test {
public static void main(String[] args) {
person p1 = new person();
person p2 = new person("lisi");
person p3 = new person("wangwu",10);
}
}
输出结果
A:name=null,age=0
cry...
B:name=lisi,age=0
cry...
C:name=wangwu,age=10
cry...
构造代码块
构造函数的特点
- 対象一建立就运行,
且优先于构造函数
- 结构上:只有一对
{}
,其中放着要执行的代码。
与构造函数的区别
- 构造代码块是所有对象进行统一初始化,构造函数是给对应的对象初始化
- 初始代码块定义共性对象初始化内容(即执行的时同一类中每种构造函数都要执行的重复代码)。
示例代码(建议与结构函数对比一下)
class person{
private String name;
private int age;
{ //重构代码块
cry();
}
person(){ //结构函数
System.out.println("A:name="+name+",age="+age);
}
person(String n){ //结构函数的重载
name = n;
System.out.println("B:name="+name+",age="+age);
}
person(String n,int a){ //结构函数的重载
name = n;
age = a;
System.out.println("C:name="+name+",age="+age);
}
public void cry(){
System.out.println("cry...");
}
}
public class test {
public static void main(String[] args) {
person p1 = new person();
person p2 = new person("lisi");
person p3 = new person("wangwu",10);
}
}
运行结果
cry...
A:name=null,age=0
cry...
B:name=lisi,age=0
cry...
C:name=wangwu,age=10
现在很多都在用阿里的,不清楚两者的区别