一、构造方法
1、构造方法必须与public类名相同(若一个原文件中有多个类,那么构造方法必须与公共类同名)
2、每个类可以有一个以上的构造器(不写,默认无参构造器)
3、构造器可以有0个或1个及以上的参数
4、构造器没有返回值/返回类型
5、构造器总是伴随着new操作一起调用
注意:
1、构造方法中若使用this语句来调用类的其他构造方法,this语句必须作为第一条语句,否则编译错误(不考虑注释语句)
2、只能使用this语句来调用其他构造方法,不能通过方法名来直接调用构造方法
3、只能在构造方法中用this来调用来的其他构造方法,而不能在实例方法中用this语句来调用,否则编译错误
二、this的用法
1、实例方法中,用this指向正在执行方法的类的实例对象(static方法中是不可以使用this对象的,因为静态方法不属于类的实例对象)
2、构造方法中,用this指向同一个对象中不同参数的另一个构造器(写在第一行),只能通过this调用一次其他的构造方法
三、super的用法----用于指向父类
1、实例方法中,使用super关键字是去调用父类当中的某个方法
2、构造方法中,使用super();调用父类中的构造器
对象初始化顺序:
1、类加载之后,从上到下(从父类到子类)执行static修饰的语句
2、static语句执行完,执行main方法
3、若new对象,将从上到下执行构造代码块{}、构造方法
类的基本初始化过程:
1、static修饰的模块(static变量和static代码块-----代码顺序依次执行)
2、实例变量及非sttatic模块
-----代码顺序依次执行
3、构造函数
-----执行对应的构造函数
子类初始化顺序:
1、父类static修饰的模块(只初始化一次)
2、子类static修饰的模块
(只初始化一次)
3、父类实例变量和非static模块
4、父类对应的构造函数-----子类对应构造函数中没有显示调用时,调用的父类默认的构造函数
5、子类实例变量和非static模块
6、子类的构造函数
总结初始化顺序:
1、主类的静态成员首先初始化。2、 主类的超类的构造方法按照从最高到最低的顺序被调用 。
3、主类的非静态对象(变量)初始化。
4、调用主类的构造方法。
如果一个类中有静态对象,那么它会在非静态对象前初始化,但只初始化一次。非静态对象每次调用时都要初始化。