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

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

问题描述

请帮我解决这个错误:


  

在类的构造函数C10h1.CollegeMember CollegeMember不能
  适用于特定类型;要求:java.lang.String中,java.lang.String中;
  发现:无参数;原因:实际的和正式的参数有所不同
  长度


我也尝试添加一个默认的构造函数调用超级,但它只是给了我另一个错误!

code:

 类C10h1
{        公共静态无效的主要(字串[] args)
        {
        学生S =新的学生(伯特,2,555-5555);
        的System.out.println(名称=+ s.getName());
        的System.out.println(一年=+ s.getYear());
        的System.out.println(电话=+ s.getTelNumber());
        教授P =新教授(简,1,555-9999);
        的System.out.println(名称=+ p.getName());
        的System.out.println(等级=+ p.getRank());
        的System.out.println(电话=+ p.getTelNumber());
        }
}

 类CollegeMember
{
    字符串名称,telNumber;
    公共CollegeMember(一个字符串,字符串二)
    {
        NAME = A;
        telNumber = B;
    }
    公共字符串的getName()
    {
        返回名称;
    }
    公共字符串getTelNumber()
    {
        返回telNumber;
    }
}

 类学生扩展CollegeMember
{    INT年;
    公益助学(字符串名称,诠释一年,弦乐telNumber)
    {
       名称= super.getname();
       年=年;
       telNumber = super.getTelNumber();
    }
    公众诠释得到年()
    {
        返回年;
    }
}

 类教授扩展CollegeMember
{    INT排名;
    公共教授(字符串名称,诠释排名,弦乐telNumber)
    {
       名称= super.getname();
       秩秩=;
       telNumber = super.getTelNumber();
    }
    公众诠释getRank()
    {
        返回等级;
    }
}

问提示:


  

3创建公共类:CollegeMember,学生,教授。学生和教授CollegeMember的子类。 CollegeMember有一个字符串名称字段和一个字符串telNumber场。它的构造函数有2个参数的名称和telNumber字段提供初始值。 CollegeMember也有访问方法getName和getTelNumber分别返回名称和telNumber。学生有一个int一年场(1 =第一年,2 =第二年,3 =第三个年头,4 =第四年)。其构造器有3个参数:名称,年份和telNumber,对于名称为初始值,年,和telNumber领域。它也有一个返回年度的存取方法得到年。教授有一个int列字段(1 =助理,2 =助理,3 =满)。它的构造函数有3个参数:姓名,军衔和telNumber提供的姓名,军衔telNumber场初始值,。它也有一个返回等级的存取方法getRank。一个主要方法创建一个C10h1类。包括类文件的javadoc注释。使用的javadoc创建文档文件。



解决方案

问题是你的学生构造函数。它需要链到 Col​​legeMember 的构造函数,它应该这样做:

 公益助学(字符串名称,诠释一年,弦乐telNumber){
    超(名称,telNumber);
    this.year =年;
}

同样,对于教授,只需用等级而不是

请注意,您的的需要设置名称 telNumber 在那些构造函数 - 这就是你链接到 Col​​legeMember 构造的工作。这也将是更好,如果你把所有的私人领域 - 那么你甚至不能够的尝试的设置在子类中那些字段......这是有道理的,因为他们不是子类的责任。

Please help me fix this error:

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

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

Code:

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

Question Prompt:

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.

解决方案

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

Likewise for Professor, just with rank instead of year

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.

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

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