对象构造
一、对象初始化
1.声明对象
当我们创建完类后,现在我们需要声明一个对象
A a = new A();
当对象创建后,Java虚拟机会调用匹配的构造函数,如果你还不了解构造函数那么请看下面的内容,如果你已经了解就可以先跳过这一节,看第三节。
2.构造器
构造器的作用是用来初始化对象中的变量,构造器的方法名和类名必须一样,且构造器是不需要类型名的(可以认为他本身就是一种类型),在一般情况下构造器有以下三个特性:
(1)当类中没有定义构造器的情况下会自动生成一个无参构造器。
public class A {
private int val;
private String key;
a() {
//java会自动生成一个这样一个无参构造器
}
}
(2)当自定义了构造器后Java机便不会自动生成一个无参构造器。
public class A {
private int val;
private String key;
//a() {
//自动生成的构造器将不存在
//}
a(int v, String k) {
val = v;
key = k;
}
}
注:你可能会疑惑为什么要在意这个自动生成的,当你在创建无参构造器对象时你就不可以简单的用A a=new a();来写因为此时并不存在a()构造器。但这里他并没有造成太大的影响,因为我们通常在声明对象的时候一定会对其中的变量初始化。而它真正的影响在之后的继承关系中,没有无参构造可能会让子类的构造函数产生错误信息。
(3)构造函数可以重载,即可以有含有不同参数的构造函数。
public class A {
private int val;
private String key;
a() {} //手动添加一个无参构造
a(int v, String k) { //声明的有参构造
val = v;
key = k;
}
}
3.Java机对象的构造过程
(1)检测类是否被加载过
(2)为新生的对象分配内存空间
在类加载后,给对象分配内存空间
(3)初始化零值
(4)执行init方法