请帮我解决这个错误:
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;
}
与教授
类似,只是用级别
而不是年份
请注意,您不需要在这些构造函数中设置name
和telNumber
- 这是CollegeMember<的工作
您链接到的构造函数。如果您将所有字段设为私有(private)也会更好 - 那么您甚至无法尝试在子类中设置这些字段...这是有道理的,因为它们不是子类的责任。
关于java - 解释一下错误: "constructor … cannot be applied: actual and formal differ in length",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19971115/