【问题标题】:Can I pass multiple Super calls in a constructor?我可以在构造函数中传递多个 Super 调用吗?
【发布时间】:2016-01-09 17:18:09
【问题描述】:

嗨,我基本上收到一条错误消息,

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

根据我的理解,这应该可以正常工作,但事实并非如此,任何人都可以解释为什么这不起作用?

谢谢

【问题讨论】:

    标签: java inheritance subclass superclass super


    【解决方案1】:

    它不能工作,因为超类需要两个参数,但你只是一个一个地提供它们,所以第一个构造函数super(name);无法编译,这就是为什么会出现这样的错误。所以你应该像这样一起传递它们:

     super(name, emailID);
    

    编辑:另外,您只能调用一次超级构造函数,并且应该首先调用它。

    【讨论】:

    • 是的,如果子类要使用父类的方法,它必须提供相同的计数和相同的类型参数。
    【解决方案2】:

    试着这样称呼它:

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

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 2014-09-02
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多