构造器
构造器的的作用,初始化对象使用,给对象 赋值
构造器的名字和 当前类 相同, 不能有返回值,
public Student(){
}
带参数 构造器
public Student(Stringname,int age){
this.name = name;
this.age - age;
}
参数列表不同,有多个 构造器 可以重载。
//构造器可以重载
public Student(Stringname,int age){
this.name = name;
this.age - age;
}
public Student(Stringname,int age,inr score){
this.name = name;
this.age - age;
this.score = score;
}
每一个类 如果一个构造器也不写, 默认提供一个 空参 构造器
在 new 对象的时候,不传入参数,默认使用 空参 构造器
一旦显示创造 构造器 ,默认构造器 不在提供,
如果创建带参构造器,就不能new 不带参数的 对象,一般 写构造器,都要把空参的也给写上。
通过 this 可以调用其他 构造器
this调用其他构造器,必须在本构造器的 第一行
非静态 代码块 { }
每次调用任意构造器,代码块 都会执行,而且先执行 代码块 ,再执行构造器
每个构造器 里面 都有的 代码,放到构造器中。
class Student {
String name;
int age;
// 静态代码块 起到 初始化赋值的 作用
{
this.name = "Tom";
this.age = 18;
}
}
子类对象实例化过程
1.从结果上看:继承性
子类继承父类以后,就获取了父类中声明的属性或方法。 创建子类的对象,在堆空间中,就会加载所父类中声明的属性。 2.从过程上看: 当我们通过子类的构造器创建子类对象时,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器,...直到调用了java.lang.Object类中空参的构造器为止。正因为加载过所的父类的结构,所以才可以看到内存中父类中的结构,子类对象才可以考虑进行调用。
对象 实例化 顺序
1.调用super()
2. 直接显示赋值语句 和 非静态代码块 依次执行(按照书写顺序)
3. 父类构造器
4.本类 直接显示赋值语句 和 非静态代码块 依次执行(按照书写顺序)
5.自己构造器