JAVA继承时构造函数的问题

java

今天看到java继承部分时,关于构造函数是否继承以及如何使用时遇到了点问题,后来查找相关资料解决了。

下面是我个人的总结:

先创建一个父类,里面有两个构造函数:

public class Jisuan {

protected int a=4;

  //构造函数1

Jisuan()

{

System.out.println("父类的无参数构造函数");

}

//构造函数2

Jisuan(int a)

{

System.out.println("父类的有参数构造函数");

}

}

  再创建一个子类,里面也有两个构造函数:

public class JisuanKid extends Jisuan {

//构造函数3

public JisuanKid() {

System.out.println("子类的无参数构造函数");

}

//构造函数4

public JisuanKid(int a) {

System.out.println("子类的有参数构造函数");

}

}

再创建第三个类;

public class TestArray {

public static void main(String[] args){

JisuanKid jisuan = new JisuanKid(3);

}
}

1、此时执行:

结果:

父类的无参数构造函数

子类的有参数构造函数
2、去掉构造函数1

结果:出错

3、去掉构造函数1和2

执行结果:

子类的有参数构造函数
4、去掉构造函数4
执行结果:

父类的无参数构造函数
出现错误

结论如下:

1.子类不能继承父类的构造函数
2.若父类中无任何构造函数,则系统默认加上无参数构造函数,创建子类对象时会调用父类的默认无参数构造函数创建父类。然后再调用子类的相应构造函数
3.若父类中有带参数构造函数,则系统不会添加默认无参数构造函数,创建子类对象时会调用父类的无参数构造函数创建父类对象,因为此时父类没有无参数构造函数,故会报错。
4.另外还可以在子类的构造函数中,使用super()或者super(参数名)来使用父类的无参数构造函数和带参数构造函数

以上是 JAVA继承时构造函数的问题 的全部内容, 来源链接: utcz.com/389874.html

回到顶部