构造器
一、什么是构造器?
构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。构造器是创建对象的重要途径,因此Java类必须包含一个或一个以上的构造器。
如果程序员没有提供自定义的构造器,系统会提供一个无参的默认构造器;如果程序员提供了自定义的构造器,系统就不再提供默认的构造器。
举例: java类必须包含一个或一个以上的构造器及默认构造器
package com.xiaobai.constructor;
public class TestConstructor {
// 构造器1
TestConstructor(){
System.out.println("无参构造器");
}
// 构造器2
TestConstructor(int a){
System.out.println("有参构造器");
}
public static void main(String[] args) {
TestConstructor tc1 = new TestConstructor();
TestConstructor tc2 = new TestConstructor(1);
}
}
// 运行结果 : 五无构造器 有参构造器
// 如果构造器1和构造器2都不写 系统会提供一个默认的构造器 格式如下
TestConstructor(){
}
举例2:如果提供了自定义构造器,系统将不再提供默认构造器
package com.xiaobai.constructor;
public class TestConstructor2 {
// 自定义构造器
TestConstructor2(String str){
System.out.println("自定义构造器");
}
public static void main(String[] args) {
// 调用这个会打印 自定义构造器
TestConstructor2 tc3 = new TestConstructor2("我在这调用了自定义构造器");
// 这里报错了 内容为:The constructor TestConstructor2() is undefined
// 因为有自定义构造器,系统便不再提供默认无参构造器
TestConstructor2 tc4 = new TestConstructor2();
}
}
二、构造器的作用
构造器最大的用处就是在创建对象时执行初始化,所谓的初始化就是创建对象时,系统对这个对象的Field进行赋值处理。
三、子类、父类初始化
首先,我们来看看两段代码
第一段:写一个Father类(父类),并为他自定义一个无参构造器
package com.xiaobai.constructor;
public class Father {
// 定义一下父类构造器
Father(){
System.out.println("我是父类无参构造器");
}
}
第二段:写一个Son类(子类),继承Father
package com.xiaobai.constructor;
public class Son extends Father{
// 定义一下子类的无参构造器
Son(){
System.out.println("我是子类无参构造器");
}
// 创建一个子类对象
public static void main(String[] args) {
Son son = new Son();
}
}
运行结果:
**解析:**子类初始化时,会先初始化他的父类。(在java编程思想中,是在子类中,内置了一个父类对象来保证的)