构造函数的重载
在创建类的对象时进行初始化工作,不但可以为对象属性赋初值,还可以在对象初始化过程中进行必要的检查和处理。
当一个够找函数需要调用另一个够找函数时,应使用关键字this,同时这个调用语句应该是整个够找函数的第一个可执行语句。
子类与父类构造函数的关系
子类并不继承父类的构造函数
1,如果子类没有定义任何构造函数,那么在创建子类对象时将调用父类无参数的构造函数
2,如果子类自己定义了构造函数,则在创建子类对象时,系统将首先隐含执行父类无参数的构造函数,然后再执行子类自己的构造函数
3,如果在子类自己定义的构造函数中,利用super关键字显式地调用父类的构造函数,系统将不再调用父类的无参数的构造函数
例子
package TEST2;
class Employee{
float salary;
Employee(){
System.out.println("使用了Employee()");
}
Employee(float sal){
System.out.println("使用了Employee(sal)");
}
}
class Manager1 extends Employee{
float allowance;
}
class Manager2 extends Employee{
float allowance;
Manager2(){
System.out.println("使用了Manager2()");
}
Manager2(float sal){
super(sal);
System.out.println("使用了Manager2(sal)");
}
Manager2(float sal,float aa){
System.out.println("使用了Manager2(sal,sa)");
}
}
public class TestCons {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("--子类没有定义构造函数--");
Manager1 mgr1=new Manager1();
System.out.println("--子类自己的构造函数(无参数)--");
Manager2 mgr2_1=new Manager2();
System.out.println("--子类自己的构造函数(1个参数),显式调用父类构造函数--");
Manager2 mgr2_2=new Manager2(3000);
System.out.println("--子类自己的构造函数(两个参数)--");
Manager2 mgr2_3=new Manager2(3000f,500f);
}
}
结果
--子类没有定义构造函数--
使用了Employee()
--子类自己的构造函数(无参数)--
使用了Employee()
使用了Manager2()
--子类自己的构造函数(1个参数),显式调用父类构造函数--
使用了Employee(sal)
使用了Manager2(sal)
--子类自己的构造函数(两个参数)--
使用了Employee()
使用了Manager2(sal,sa)