关于构造函数的继承及Implicit super constructor Ca() is undefined. Must explicitly invoke another construcor错误

在学习Java时遇到一个错误:Implicit super constructor Ca() is undefined. Must explicitly invoke another constructor。原因是子类Cb继承Ca时,系统会默认调用父类的无参构造函数,但Ca只有一个带参构造。解决方法是在父类添加无参构造或子类构造中显式调用父类的有参构造。通过这两种方式可以正确执行父类和子类的构造流程。
摘要由CSDN通过智能技术生成

 

今天在学习JAVA的时候遇到了这样一个问题,在编写代码的时候,13行  

Cb(int num){}的地方出现了一个Error:Implicit super constructor Ca() is undefined. Must explicitly invoke another constructor

仔细检查了一番,没找到什么问题,想着Cb继承Ca那不就是先调用父类Ca的构造函数吗,然后自己再跑一遍Cb的构造函数吗,结果不是15吗,怎么就出错了呢。找了半天资料在https://blog.csdn.net/dlf123321/article/details/53411539这位前辈的文章中找到了答案

class Ca{
	    int num = 1;
	    Ca(int num){
		        this.num = num;
		        System.out.print(this.num);
	    }
	 
}

class Cb extends Ca{

    int num = 2;
	    Cb(int num) {
		        this.num = num;
        System.out.print(num);

	    }
	
	    public static void main(String[] args) {
		        Ca a = new Cb(5);
	    }
} 

原来在JAVA中,子类继承父类,在new的时候,会默认调用父类的无参构造函数,这里父类Ca中已经有一个Ca(int num){},于是系

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值