这个Student为什么报错了

Person p=new Person("mike",23);
p.show();
Student s=new Student("mike",23,"学士");
s.show();
}
}
class Person{
String name;
int age;

    public Person(String name,int age) {
    this.age=age;
    
    this.name=name;}
    public void show() {System.out.println("姓名:"+name+"年龄"+age);
    }
}
    class Student extends Person{
        String degree;
        
        public Student(String name,int age,String degree) {super(name,age);
            this.degree=degree;
        }
        public void show() {super.show();
        System.out.print("学位:"+degree);}}

望采纳

您的代码中存在几个问题。

首先,在 Java 中,一个类可以包含多个构造函数,每个构造函数都有不同的参数列表。然而,您在定义构造函数时,没有指定其参数列表。这会导致编译器报错。

为了避免这个问题,您可以在定义构造函数时,指定它的参数列表。例如:

public Person(String name, int age) {
    // ...
}

其次,在 Java 中,每个类都需要定义在一个独立的文件中,并且文件名必须与类名相同。然而,您在定义类时,没有按照这个规则来命名文件。这也会导致编译器报错。

为了避免这个问题,您可以将类 Person 和类 Student 分别定义在两个文件中,文件名分别为 Person.java 和 Student.java。

综上所述,下面是修改后的代码:

文件 Person.java:

public class Person {
    String name;
    int age;
    public Person(String name, int age) {
        this.age = age;
        this.name = name;
    }
    public void show() {
        System.out.println("姓名:" + name + "年龄" + age);
    }
}

文件 Student.java:

public class Student extends Person {
    String degree;
    public Student(String name, int age, String degree) {
        super(name, age);
        this.degree = degree;
    }
    public void show() {
        super.show();
        System.out.print("学位:" + degree);
    }
}