java中构造方法重载和继承

  1. java中同一个类同的构造方法怎么调用另一个构造方法呢?

    如果一个类中有多个构造方法,在一个构造方法中想要调用另一个构造方法,需要用到this(参数)这样的方式,且这行语句必须写在构造方法的第一行。

public class B {
    public B() {
        /**
         * 这里的this(字符串)就是调用符合参数要求的构造方法
         * 这个this(字符串)语句只能写在这个构造方法的第一行
         * 否则会造成编译错误。
         */
        this("调用带参数的构造方法");
        System.out.println("这是一个不带参数的构造方法");
    }

    public B(String s) {
        System.out.println("这是一个带参数的构造方法");
    }
    public static void main(String[] args) {
        B b = new B();
    }

}

输出结果为:

这是一个带参数的构造方法
这是一个不带参数的构造方法
  1. java中的继承
    java中子类继承父类,在创建子类的对象时,其实默认是先调用父类的无参数的构造方法,创建父类对象,然后再创建子类对象,子类对象和父类对象时是挨着存放的,因此,子类对象可以使用父类的方法和全局变量。
class Parent{
    public Parent() {
        System.out.println("调用了父类的无参数构造方法");
    }
    public Parent(String inforamtion) {
        System.out.println("调用了父类有参数的构造方法");
    }

}
public class Child extends Parent  {
    public Child() {
        System.out.println("子类的无参数构造方法");
    }
    public static void main(String[] args){
        Child child = new Child();

    }

}

其输出结果为

调用了父类的无参数构造方法
子类的无参数构造方法

现在我们把父类中无参数的构造方法注释掉,再次调用可以发现出现了编译错误。因为子类会默认调用父类的无参数的构造方法来生成父类对象,而我们把父类中的无参数构造方法注释掉后,子类就找不到了,因此出错。我们可以为子类指定父类中带参数的构造方法。

class Parent{
    /*public Parent() {
        System.out.println("调用了父类的无参数构造方法");
    }*/
    public Parent(String inforamtion) {
        System.out.println("调用了父类有参数的构造方法");
    }

}
public class Child extends Parent  {
    public Child() {
        /**
         * super(参数)这句是调用父类的有参数的构造方法,其中super必须写在第一行
         * 否则出错,因为是先生成父类对象,再生成子类对象。在这里的super表示的是父类的
         * 应用。
         */
        super("调用父类中有参数的构造器,且参数类型为字符串");
        System.out.println("子类的无参数构造方法");
    }
    public static void main(String[] args){
        Child child = new Child();

    }

}

输出结果为:

调用了父类有参数的构造方法
子类的无参数构造方法

猜你喜欢

转载自blog.csdn.net/light_blue_love/article/details/79706117