构造函数:
构造函数的格式: 类名(形参类型 形参){}
注意:在类中如果有有参的构造函数就在写一个无参的构造函数
构造函数调用几次?构造函数在实例化的时候就会被调用,实例化一次次调用一次
调用无参构造器,只能在第一条语句里,且只能调用一次。
(this调用同类的构造函数,super调用父类的构造函数 Object是所有类的超级父类 默认继承Object)
构造函数可以被重载嘛? 可以
构造函数有啥用?初始化参数
public ConstructorDemo(){
System.out.println("我是无参构造函数");
}
public ConstructorDemo(int age){
this();
this.age = age;
System.out.println("我是有参的构造" + age);
}
public ConstructorDemo(int age, String name){
this(66);
this.age = age;
this.name = name;
System.out.println("我是有参的构造" + age + name);
}
在继承中:
子类 如果继承了父类他会去调用父类相对应的构造函数,在实例化的时候是先执行父类的相对应的构造函数(相对应是指参数要对应,假如你是无参的实例化,那么先去执行父类的无参构造函数,再执行子类的无参构造函数)
代码块:
类的组成:属性、行为、构造函数、静态代码块、构造代码块
静态代码块的格式:
static{}
调用:在类加载的时候就调用了 ,只会调用一次
static{
System.out.println("我是静态代码块");
}
构造代码块格式:{}
调用:在实例化的时候调用,实例化一次就调用一次
{
System.out.println("我是构造代码块");
}
局部代码块 作用控制局部变量的声明周期 从而让内存效率更高(例如,两个数字的转换,需要用到临时变量的时候)
public void show(){
{
int num = 10;//局部代码块定义的变量,在局部代码块执行完后就销毁,外部不能访问该变量
}
//System.out.println(num); 出错,不能访问局部代码块里面定义的变量
int num = 20;
System.out.println("子类的show方法:"+num);
}
关于在继承中代码块和构造函数的执行流程:
* 父类的静态代码块
* 子类的静态代码块
* 父类构造代码块
* 父类的构造方法
* 子类构造代码块
* 子类的构造方法
常问的几个问题:
静态代码块和构造代码块和构造函数执行流程?
静态代码块->构造代码块->构造函数
静态代码块和构造代码块和构造函数分别在什么时候使用?
构造代码块:给所有对象进行初始化。对象一建立就运行,而且优先于构造函数执行。可被执行多次。
静态代码块:有些代码必须在项目启动的时候就执行的时候可以使用,优先于main函数执行,只执行一次
构造函数:构造函数是给对应的对象进行初始化。可被执行多次。