构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。
如果是子类,初始化时 会先调用 父类的构造方法 即 先初始化 父类 再初始化子类
初始化时的加载顺序 代码块 大于 局部变量 大于 构造方法
构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:
1.构造方法作用:(1).构造出来一个类的实例 即 new (2).对构造出来一个类的实例(对象)初始化 即调用构造方法。
2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
4.类中必定有构造方法,若不写,系统自动添加无参构造方法。接口不允许被实例化,所以接口中没有构造方法。
5.不能被static、final、synchronized、abstract和native修饰。
6.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。
7.构造方法分为两种:无参构造方法 有参构造方法
构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。
8.构造代码块:
(1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
(2)构造代码块和构造函数的区别:
构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化
public class Test {
public void getData() {
String bean ="111";
Thread thread = new Thread(new npsDataRunnable(bean));
thread.start();
}
public class npsDataRunnable implements Runnable {
private String beanId;
sayHello say = new sayHello("静静", "33");
public npsDataRunnable(String beanId) {
System.out.println("进入了构造方法,beanId="+beanId);
this.beanId = beanId;
}
public void run() {
doNpsData(this.beanId);
}
}
private void doNpsData(String beanId) {
System.out.println(beanId);
}
public class sayHello{
private String name ;
private String age ;
public sayHello(String name,String age){
this.name = name ;
this.age = age ;
System.out.println("name="+name+"age="+age);
}
}
}
public class Demo1 {
public static void main(String[] args) {
Test te = new Test();
te.getData();
}
}
这时 运行demo1的结果为
name=静静age=33
进入了构造方法,beanId=111
111