2016-01-09 2 views
0

Привет я в основном получаю сообщение об ошибке, говорящее,Могу ли я передать несколько вызовов Super в конструкторе?

constructor Member in class Member cannot be applied to given types; 
required: java.lang.String,java.lang.String; found:java.lang.String; 
reason: actual and formal argument lists differ in length 

Но я не знаю, почему, я подумал, что это может быть, потому что я не имею права передать несколько супер вызовов в конструкторе? это было бы правильно?

Это мой супер класс, который проведет имя и адрес электронной

public class Member 
{ 
    // The teacher's or Student's name. 
    private String name; 
    // The teacher's or Student's email; 
    private String email; 

    /** 
    * Constructor for objects of class Member 
    */ 
    public Member(String name,String emailID) 
    { 
     this.name = name; 
     email = emailID; 
    } 

} 

и это конструктор подкласса, который я получаю ошибку, когда я пытаюсь скомпилировать.

public Student(String name, String emailID) 
    { 
     super(name); 
     super(emailID); 
     attendance = 0; 
    } 

В моем понимании, это должно работать нормально, но это не так, кто-то может пролить некоторый свет на то, почему это не работает?

Благодаря

ответ

1

Он не может работать, потому что супер класс нуждается два параметра, но вы просто предоставить им один за другим, так что первый конструктор super(name); не может скомпилировать, поэтому такая ошибка существует. Таким образом, вы должны передать их вместе, как это:

super(name, emailID); 

Edit: Кроме того, вы можете вызвать только супер конструктор один раз, и он должен первым делом позвонить.

+0

да, если подкласс хотите использовать метод суперкласса, он должен обеспечить такой же подсчет и те же параметры типа. – starkshang

+0

Боже, я идиот, спасибо, что он работает сейчас – user5647516

1

Try назвать это так:

public Student(String name, String emailID) 
    { 
    super(name,emailID); 
    attendance = 0; 
    }