package test;
class Person {
public String name;
public int age;
public Person(String name) {
this.name = name;
// this.age = age;
System.out.println("Person constructor is called");
}
}
public class Student extends Person {
public int grade;
public Student(String name,int age,int grade) {
super(name);
}
public Student(String name,int age) {
}
public static void main(String[] args) {
Student studnet = new Student("jiajiama",20,3);
}
}
会提示如下的报错:
Student.java:18: 错误: 无法将类 Person中的构造器 Person应用到给定类型;
public Student(String name,int age) {
^
需要: String
找到: 没有参数
原因: 实际参数列表和形式参数列表长度不同
1 个错误
我的理解是:应该调用student 的三个参数的构造函数,然后调用super调用父类中只有1个参数的构造函数,但是现在为什么会报错呢
所有的构造方法都需要调用父类的构造方法,你可以通过 this 衔接到类本身的其他构造方法,但是最终必须得存在父类的构造方法(如果父类构造方法无参数,可以省略)。你这个 Student(String name,int age) 构造方法既没有调用父类的构造方法,也没有衔接到其他的构造方法里,当然有错拉。