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

mac2026-08-23  1

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)