Java构造函数学习总结

构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与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