目录

(八)构造方法

构造方法


构造方法用于初始化一个新建的对象, 如果你没有定议任何构造方法的形式, 程式会为你取一个不带任何参数的构造函数, 那么你产生类的对像时只能用不带参数的方法。

  • 1.构造器必须与类同名(如果一个源文件中有多个类, 那么构造器必须与公共类同名)
  • 2.每个类可以有一个以上的构造器
  • 3.构造器可以有 0 个、 1 个或 1 个以上的参数
  • 4.构造器没有返回值
  • 5.构造器总是伴随着 new 操作一起调用

public class Father {

    public Father() {
        System.out.println("调用了无参的构造函数.");
    }

    public Father(String msg) {
        System.out.println("调用了有参的构造函数: " + msg);
    }

    public static void main(String args[]) {
        Father f1 = new Father();
        Father f2 = new Father("Hello");
    }
}

运行结果:

调用了无参的构造函数.
调用了有参的构造函数: Hello
构造函数中"super"用法

构造方法和普通方法都用会关键字 super 指向父类,但是用的方法不一样。在构造方法中,调用父类中的某一个构造函数。在构造方法中的用法。

public class Son extends Father {

    public Son(String msg) {
        super(msg);  // 调用父类的构造方法
    }

    public static void main(String args[]) {
        Son f = new Son("Hello");
    }
}

运行结果:

调用了有参的构造函数: Hello
构造函数中"this"的用法

接下来的例子中涉及到两个用法。

  • this(参数):在自身构造方法内部调用其它构造方法。

  • this.成员变量:调用本类中的成员变量。


public class Son2 {

    //定义成员变量
    private String name; // 实例化对象时,默认值是null

    /**
     * 无参数的构造方法
     */
    Son2() {
        System.out.println("我是二儿子!");
    }

    /**
     * 有参数的构造方法
     */
    Son2(String name) {
        this();  //调用无参数的构造方法
        this.name = name;  // 调用成员变量
    }

    public void say() {
        System.out.println("我叫:" + name);
    }

    public static void main(String[] args) {
        Son2 s = new Son2("王小二");
        s.say();
    }
}

运行结果:

我是二儿子!
我叫:王小二

原始封面

https://images.unsplash.com/photo-1610433572201-110753c6cff9?w=300