构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。在JAVA语言中,构造函数与C++语言中的构造函数相同,JAVA语言中普遍称之为构造方法。
- 构造函数有以下几个特点:
1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造函数必须与公共类同名)
2.每个类可以有一个以上的构造函数
3.构造函数可以有0个、1个或1个以上的参数
4.构造函数没有返回值
5.构造函数总是伴随着new操作一起调用
实例1:
public class A{
public A(){
System.out.println("A的无参的构造函数!");
}
public A(String name){
System.out.println("A的有一个参数的构造函数!");
}
public A(String name, int age){
System.out.println("A的有两个参数的构造函数!");
}
}
调用函数:
public class Test {
public static void main(String[] args) {
A a1=new A();
A a2=new A("ZhangSan");
A a3=new A("ZhangSan",20);
}
}
输出结果:
A的无参的构造函数!
A的有一个参数的构造函数!
A的有两个参数的构造函数!
- java构造函数的调用问题(不能继承)
(1)子类只能调用父类的默认(缺省)构造函数,即无形参构造函数。如果父类没有默认构造函数,那子类不能从父类调用默认构造函数。
(2)子类从父类处调用父类默认构造函数,不能成为子类的默认构造函数。
(3)在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。
(4)如果子类想调用父类的非默认构造函数,则必须使用super来实现。
实例2:
public class B extends A{
public B(){
System.out.println("B的无参构造函数!");
}
public B(String s){
super(s); //调用父类的构造函数的第一个构造函数
System.out.println("B的有参构造函数!"+" "+s);
}
}
调用函数:
public class Test {
public static void main(String[] args) {
B b1=new B();
B b2=new B("nihao");
}
}
输出结果:
B的无参构造函数!
A的有一个参数的构造函数!
B的有参构造函数! nihao