0

このエラーの修正を手伝ってください:

クラス C10h1.CollegeMember のコンストラクター CollegeMember は、特定の型に適用できません。必須: java.lang.String,java.lang.String; 見つかった: 引数なし。理由: 実引数と仮引数の長さが異なります

また、スーパーを呼び出すデフォルトのコンストラクターを追加しようとしましたが、別のエラーが発生しました!

コード:

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

質問プロンプト:

CollegeMember、Student、Professor の 3 つのパブリック クラスを作成します。Student と Professor は CollegeMember のサブクラスです。CollegeMember には、文字列の名前フィールドと文字列の telNumber フィールドがあります。そのコンストラクターには、name フィールドと telNumber フィールドの初期値を提供する 2 つのパラメーターがあります。CollegeMember には、それぞれ name と telNumber を返すアクセサ メソッド getName と getTelNumber もあります。Student には int year フィールド (1=1 年目、2=2 年目、3=3 年目、4=4 年目) があります。そのコンストラクターには、名前、年、および telNumber フィールド。また、年を返すアクセサ メソッド getYear もあります。教授には int ランク フィールドがあります (1 = アシスタント、2 = アソシエイト、3 = フル)。そのコンストラクターには、name、rank、および telNumber の 3 つのパラメーターがあり、name、rank、および telNumber の初期値を提供します。および telNumber フィールド。また、ランクを返すアクセサ メソッド getRank もあります。main メソッドで C10h1 クラスを作成します。クラス ファイルに javadoc コメントを含めます。javadoc を使用してドキュメント ファイルを作成します。

4

1 に答える 1

1

問題はStudentコンストラクタです。CollegeMemberコンストラクターにチェーンする必要があり、次のようにする必要があります。

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

同様にProfessor、のrank代わりにyear

これらのコンストラクターでandを設定する必要がないことに注意してください。これは、チェーン先のコンストラクターの仕事です。また、すべてのフィールドを非公開にした方がよいでしょう。そうすると、サブクラスでそれらのフィールドを設定することさえできなくなります...サブクラスの責任ではないため、これは理にかなっています。nametelNumberCollegeMember

于 2013-11-14T06:33:51.363 に答える