java - 解释一下错误: "constructor … cannot be applied: actual and formal differ in length"

标签 java constructor arguments

请帮我解决这个错误:

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,但它只是给了我另一个错误!

代码:

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

问题提示:

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 构造函数,应该这样做:

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

教授类似,只是用级别而不是年份

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

关于java - 解释一下错误: "constructor … cannot be applied: actual and formal differ in length",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19971115/

相关文章:

c++ - 类构造函数: Incomplete type is not allowed (in member list) - VS C++ w/QT

c++ - 具有不同数量参数的函数调用

Python将列表作为参数传递

python - 我可以将函数设置为默认参数吗?

java - 选项卡不填充 tablayout

java - Spring mvc @DateTimeFormat 未按预期工作

java - 在 Java 中声明默认构造函数有什么意义吗?

c++ - 将 temp 分配给 const ref 成员会导致段错误

java - 如何准确计算相对于屏幕尺寸的布局(按钮)高度?

java - 随机数生成器正在生成巨大的负数