出现这种问题有大概有两种可能:
1.继承父类的构造,java子类继承父类的构造方法,这个问题的原因就是父类已经有构造方法了,举个例子:
父类
package p1;
public class Person {
String name;
int age;
/*public Person(){
System.out.println("Person str");
}*/
public Person(String name,int age){
this.name=name;
this.age=age;
}
}
子类
package p1;
public class Teacher extends Person {
/*public Teacher(){
System.out.println("Teacher str");
}*/
public Teacher(String name,int age){
this.name=name;
this.age=age;
}
}
把子类改成这样就好了,super引用父类的构造方法。
package p1;
public class Teacher extends Person {
/*public Teacher(){
System.out.println("Teacher str");
}*/
int ino;
public Teacher(String name,int age,int ino){
super(name,age);
this.ino=2021;
}
}
2.还有一种情况就是,子类中使用了无参数的构造方法,而父类中没有定义无参数的构造方法
子类:
package p1;
public class Teacher extends Person {
public Teacher(){
System.out.println("Teacher str");
}
}
父类:
package p1;
public class Person {
String name;
int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
}
解决办法就是在父类中添加无参数的构造方法
package p1;
public class Person {
String name;
int age;
public Person(){
System.out.println("Person str");
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
}
建议在创建类的时候,在父类和子类中都添加无参数的构造方法。