자바 : 내가 오류를 해결할 수있는 방법 "암시 적 슈퍼 생성자가 정의되어 있지 않습니다"

user13047397 :

나는 다음과 같은 문제가 있습니다 implicit super constructor is undefined must invoke another constructor java. 나는 두 개의 클래스 중 하나 상속을 가지고 슈퍼를 호출 - 방법.

사람 클래스 :

    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;
        }

그리고 두 번째 클래스 :

    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
        }

왜 확장에 Person 클래스에 학생 클래스는 Stundet (사람 p)를 구현해야합니다 - 방법?

하나의 해결 방법 : 사람을 () 추가 - 방법을에 Person-Class:

    Person(){
    System.out,println("Hello World"};

아직 작동하지 않습니다.

첫 번째 질문 : 왜 슈퍼 (p)를 않습니다 - 방법이 작동하지 않는 이유는 무엇입니까?

두 번째 질문 : 어떻게 심지어 추가하지 않고 내가 그것을 작동하게 할 Person()-받는 매개 변수없이를 Person-Class?

세 번째 질문 : 왜 추가하지 않았다 Person()- 일을?

안드레아스 :

첫 번째 질문 : 왜 슈퍼 (p)를 않습니다 - 방법이 작동하지 않는 이유는 무엇입니까?

이 점에서 잘 작동 두 번째 Student 생성자입니다.

두 번째 질문 : 심지어 사람 () 추가하지 않고 내가 그것을 작동하게 할 방법 -는 Person 클래스에 매개 변수없이를?

당신은 호출 할 필요가 하나Person사용하여 생성자 super(...)는 점에서 구문을 먼저 Student 당신이 있기 때문에, 생성자 해야한다 적어도 제공 firstName과를 name.

세 번째 질문 : 왜 사람 ()를 추가하지 않았다 - 일을?

에 인수가없는 생성자를 추가 Person컴파일러는 이제 암시 적으로 그 호출 할 수 있기 때문에, 작업을 수행 Person의 생성자 첫번째 Student 생성자를.

추천

출처http://43.154.161.224:23101/article/api/json?id=318902&siteId=1