【问题标题】:Explain the error: "constructor … cannot be applied: actual and formal differ in length"解释错误:“构造函数......无法应用:实际长度和正式长度不同”
【发布时间】:2013-11-27 01:51:34
【问题描述】:

请帮我解决这个错误:

类 C10h1.CollegeMember 中的构造函数 CollegeMember 不能 适用于给定类型;必需:java.lang.String,java.lang.String; 发现:没有参数;原因:实际论证和形式论证在 长度

我还尝试添加一个默认构造函数来调用 super,但它只是给了我另一个错误!

代码:

class C10h1
{

        public static void main(String[] args)
        {
        Student s = new Student("Bert", 2, "555-5555");
        System.out.println("name = " + s.getName());
        System.out.println("year = " + s.getYear());
        System.out.println("telephone = " + s.getTelNumber()); 
        Professor p = new Professor("Jane", 1, "555-9999");
        System.out.println("name = " + p.getName());
        System.out.println("rank = " + p.getRank());
        System.out.println("telephone = " + p.getTelNumber()); 
        }
}
class CollegeMember
{


    String name, telNumber;
    public CollegeMember(String a, String b) 
    {
        name = a; 
        telNumber = b; 
    }
    public String getName()
    {
        return name;
    }
    public String getTelNumber()
    {
        return telNumber;
    }
}
class Student extends CollegeMember
{

    int year;
    public Student(String name, int year, String telNumber)
    {
       name = super.getname();
       year = year;
       telNumber = super.getTelNumber();
    }
    public int getYear()
    {
        return year;
    }
}
class Professor extends CollegeMember
{

    int rank;
    public Professor(String name, int rank, String telNumber)
    {
       name = super.getname();
       rank = rank;
       telNumber = super.getTelNumber();
    }
    public int getRank()
    {
        return rank;
    }
}

问题提示:

创建 3 个公共课程:CollegeMember、Student 和 Professor。学生和教授是 CollegeMember 的子类。 CollegeMember 有一个字符串名称字段和一个字符串 telNumber 字段。它的构造函数有 2 个参数,为 name 和 telNumber 字段提供初始值。 CollegeMember 还具有分别返回 name 和 telNumber 的访问器方法 getName 和 getTelNumber。 Student 有一个 int year 字段(1=第一年,2=第二年,3=第三年,4=第四年)。它的构造函数有 3 个参数:name、year 和 telNumber,它们为 name、year、和电话号码字段。它还有一个返回年份的访问器方法 getYear。教授有一个 int rank 字段(1=助理,2=助理,3=完整)。它的构造函数有 3 个参数:name、rank 和 telNumber,它们为 name、rank 和 telNumber 字段提供初始值。它还有一个返回排名的访问器方法 getRank。使用 main 方法创建一个 C10h1 类。在类文件中包含 javadoc cmets。使用 javadoc 创建文档文件。

【问题讨论】:

    标签: java constructor arguments


    【解决方案1】:

    问题在于您的 Student 构造函数。它需要链接到CollegeMember 构造函数,它应该这样做:

    public Student(String name, int year, String telNumber) {
        super(name, telNumber);
        this.year = year;
    }
    

    Professor 也是如此,只是用rank 代替year

    请注意,您不需要在这些构造函数中设置nametelNumber - 这是您链接到的CollegeMember 构造函数的工作。如果您将所有字段设为私有也会更好 - 那么您甚至无法尝试在子类中设置这些字段......这是有道理的,因为它们不是子类的责任。

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      相关资源
      最近更新 更多