解释错误:“构造函数...不能应用:实际和形式的长度不同”

时间:2013-11-14 06:32:42

标签: java constructor arguments

请帮我修复此错误:

  

类C10h1.CollegeMember中的构造函数CollegeMember不可以   适用于给定类型; required: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有一个String名称字段和一个字符串telNumber字段。它的构造函数有2个参数,它们为name和telNumber字段提供初始值。 CollegeMember还有访问方法getName和getTelNumber,分别返回name和telNumber。学生有一个int year字段(1 =第一年,2 =第二年,3 =第三年,4 =第四年)。它的构造函数有3个参数:name,year和telNumber,它们提供名称,年份的初始值,和telNumber字段。它还有一个访问方法getYear,它返回year。教授有一个int rank字段(1 =助理,2 =关联,3 =完整)。它的构造函数有3个参数:name,rank和telNumber,它们为name,rank和telNumber字段提供初始值。它还有一个返回排名的访问方法getRank。使用main方法创建C10h1类。在类文件中包含javadoc注释。使用javadoc创建文档文件。

1 个答案:

答案 0 :(得分:1)

问题是你的Student构造函数。它需要链接到CollegeMember构造函数,它应该像这样:

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

同样适用于Professor,仅使用rank代替year

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