子类构造调用父类构造问题:Implicit super constructor xx() is undefined for default constructor.

1、继承关系说明:

public class Man  extends Person {
	    private String whp;
		public Man() {  **//这里报错**
		// TODO Auto-generated constructor stub
		System.out.println("Man 构造器");
	}

	public Man(String whp) {
		super(); **//这里也报错**
		this.whp = whp;
	}
		}
		
public abstract class Person {
	
	private String name;
	private int age;
	
//	public Person() {
//		// TODO Auto-generated constructor stub
//		System.out.println("Person 构造器");
//	}
	
	public Person (String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public  void show(){
		System.out.println("name is:" + name);
		
	}
	
	private void personDo(){
		System.out.println("person private function");
	}
	
	public abstract void myrun();

}

报错图片:
在这里插入图片描述
报错的原因是,在Person类中,缺少无参的构造方法(被注释掉了),所以在子类代码,第7行中,默认先调用父类的无参构造方法是报错,第14行使用super(),调用父类无参构造也报错。
解决方法:在父类中添加无参构造方法。
总结:
1、假如父类方法中,存在有参构造方法,子类中也使用了有参构造方法,那么父类中,一定要添加无参构造方法。
2、如果父类中,没有存在有参构造方法,那么默认存在无参构造,可以在子类中使用任意参数类型的构造方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值