Java: How can i solve the Error: "implicit super constructor is undefined"
Java: How can i solve the Error: "implicit super constructor is undefined"
我遇到以下问题:implicit super constructor is undefined must invoke another constructor java
。我有两个 classes,其中一个继承并调用了超级方法。
人-Class:
public class Person {
private String firstName;
private String name;
private Date birthday;
private Gender gender = Gender.Unknown;
Person(String fn, String n, Date d, Gender g){
firstName = fn;
name = n;
birthday = d;
gender = g;
}
Person(Person p){
firstName = p.firstName;
name = p.name;
birthday = new Date(p.birthday);
gender = p.gender;
}
Person(String fn, String n){
firstName = fn;
name = n;
}
第二个Class:
public class Student extends Person implements Noten {
private int nr;
private String st;
Student(int m, String s){
this.nr= m;
this.st= s;
}
Student(Person p) {
super(p);
// TODO Auto-generated constructor stub
}
为什么将扩展到class人,学生class必须实施Stundet(Person p) - 方法?
一个解决方案:添加一个 Person() - 方法到 Person-Class
:
Person(){
System.out,println("Hello World"};
还是不行。
第一个问题:为什么 super(p) - 方法不起作用?
第二个问题:如何在不添加 Person()
的情况下使其工作 - Person-Class
没有参数?
第三个问题: 为什么添加 Person()
- 不起作用?
第一个问题:为什么 super(p) - 方法不起作用?
它工作正常,因为 second Student
构造函数。
第二个问题:如何在不添加 Person() 的情况下使其工作 - 没有参数到 Person-Class?
您需要在 first 中使用 super(...)
语法调用 one Person
构造函数 Student
构造函数,因为你必须至少提供一个firstName
和一个name
.
第三个问题:为什么添加 Person() - 不起作用?
向 Person
添加了一个无参数构造函数确实有效,因为编译器现在可以在 first [=10] 中隐式调用 Person
构造函数=]构造函数。
补充一下其他人所说的,为了构建 Student class 的实例,您的 class 必须调用 some 构造函数人。否则父 class 中的任何内容都不会被初始化,这将使扩展 Person 变得无用。
由于在您的第一个 Student 构造函数中您没有显式调用 person 构造函数,因此 java 试图找到一个您没有定义的无参数 Person() 构造函数。找不到它,你会看到你看到的这个编译错误。
这是一个非常基础的 java 问题,所以我假设您是 java 的新手。我强烈建议阅读初学者的 java 书籍或在线(深入)教程,以便在开始编码之前了解一些基础知识,或者在练习编码时参考。如果没有这些基础知识,您将花费大量时间转动轮子(或在线等待答案)。
我遇到以下问题:implicit super constructor is undefined must invoke another constructor java
。我有两个 classes,其中一个继承并调用了超级方法。
人-Class:
public class Person {
private String firstName;
private String name;
private Date birthday;
private Gender gender = Gender.Unknown;
Person(String fn, String n, Date d, Gender g){
firstName = fn;
name = n;
birthday = d;
gender = g;
}
Person(Person p){
firstName = p.firstName;
name = p.name;
birthday = new Date(p.birthday);
gender = p.gender;
}
Person(String fn, String n){
firstName = fn;
name = n;
}
第二个Class:
public class Student extends Person implements Noten {
private int nr;
private String st;
Student(int m, String s){
this.nr= m;
this.st= s;
}
Student(Person p) {
super(p);
// TODO Auto-generated constructor stub
}
为什么将扩展到class人,学生class必须实施Stundet(Person p) - 方法?
一个解决方案:添加一个 Person() - 方法到 Person-Class
:
Person(){
System.out,println("Hello World"};
还是不行。
第一个问题:为什么 super(p) - 方法不起作用?
第二个问题:如何在不添加 Person()
的情况下使其工作 - Person-Class
没有参数?
第三个问题: 为什么添加 Person()
- 不起作用?
第一个问题:为什么 super(p) - 方法不起作用?
它工作正常,因为 second Student
构造函数。
第二个问题:如何在不添加 Person() 的情况下使其工作 - 没有参数到 Person-Class?
您需要在 first 中使用 super(...)
语法调用 one Person
构造函数 Student
构造函数,因为你必须至少提供一个firstName
和一个name
.
第三个问题:为什么添加 Person() - 不起作用?
向 Person
添加了一个无参数构造函数确实有效,因为编译器现在可以在 first [=10] 中隐式调用 Person
构造函数=]构造函数。
补充一下其他人所说的,为了构建 Student class 的实例,您的 class 必须调用 some 构造函数人。否则父 class 中的任何内容都不会被初始化,这将使扩展 Person 变得无用。
由于在您的第一个 Student 构造函数中您没有显式调用 person 构造函数,因此 java 试图找到一个您没有定义的无参数 Person() 构造函数。找不到它,你会看到你看到的这个编译错误。
这是一个非常基础的 java 问题,所以我假设您是 java 的新手。我强烈建议阅读初学者的 java 书籍或在线(深入)教程,以便在开始编码之前了解一些基础知识,或者在练习编码时参考。如果没有这些基础知识,您将花费大量时间转动轮子(或在线等待答案)。