解释错误:“构造函数……不能应用:实际和形式的长度不同"; [英] Explain the error: "constructor … cannot be applied: actual and formal differ in length"

查看:13
本文介绍了解释错误:“构造函数……不能应用:实际和形式的长度不同";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮我解决这个错误:

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

constructor CollegeMember in class C10h1.CollegeMember cannot be applied to given types; required: java.lang.String,java.lang.String; found: no arguments; reasons: actual and formal arguments differ in length

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

Also I tried adding a default constructor to call super but it just gave me another error!

代码:

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 有一个字符串名称字段和一个字符串电话号码字段.它的构造函数有 2 个参数,为 name 和 telNumber 字段提供初始值.CollegeMember 还具有访问方法 getName 和 getTelNumber,分别返回 name 和 telNumber.Student 有一个 int year 字段(1=第一年,2=第二年,3=第三年,4=第四年).它的构造函数有 3 个参数:name、year 和 telNumber,它们为 name、year、和电话号码字段.它还有一个返回年份的访问器方法 getYear.教授有一个整数等级字段(1=助理,2=助理,3=满).它的构造函数有 3 个参数:name、rank 和 telNumber,它们为 name、rank 和 telNumber 字段提供初始值.它还有一个返回等级的访问器方法 getRank.使用 main 方法创建一个 C10h1 类.在类文件中包含 javadoc 注释.使用 javadoc 创建文档文件.

Create 3 public classes: CollegeMember, Student, and Professor. Student and Professor are subclasses of CollegeMember. CollegeMember has a String name field and a string telNumber field. Its constructor has 2 parameters that provide the initial values for the name and telNumber fields. CollegeMember also has accessor methods getName and getTelNumber that return name and telNumber, respectively. Student has an int year field(1=first year, 2=second year, 3=third year, 4=fourth year).Its constructor has 3 parameters: name, year, and telNumber that provide initial values for the name, year, and telNumber fields. It also has an accessor method getYear that returns year. Professor has an int rank field(1=assistant, 2=associate, 3=full). Its constructor has 3 parameters: name, rank, and telNumber that provide initial values for the name, rank, and telNumber fields. It also has an accessor method getRank that returns rank. Create a C10h1 class with a main method. Include javadoc comments in your class files. Use javadoc to create documentation files.

推荐答案

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

The problem is your Student constructor. It needs to chain to the CollegeMember constructor, which it should do like this:

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

Professor 也是一样,只是用 rank 而不是 year

Likewise for Professor, just with rank instead of year

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

Note that you don't need to set name and telNumber in those constructors - that's the job of the CollegeMember constructor you're chaining to. It would also be better if you made all the fields private - then you wouldn't even be able to try to set those fields in the subclasses... which makes sense, as they're not the responsibility of the subclasses.

这篇关于解释错误:“构造函数……不能应用:实际和形式的长度不同";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆