2

さて、私のプログラムには 4 つの異なるクラスがあり、サブクラスの 1 つに新しい変数を追加しようとしています。関連するすべてのクラスのコードを示し、正確に何が間違っているのかを説明します。

最初のコードは私の Person クラスです:

class Person {
private String myName; // name of the person
private int myAge; // person's age
private String myGender; // 'M' for male, 'F' for female

// constructor
public Person(String name, int age, String gender) {
    myName = name;
    myAge = age;
    myGender = gender;
}

public String getName() {
    return myName;
}

public int getAge() {
    return myAge;
}

public String getGender() {
    return myGender;
}

public void setName(String name) {
    myName = name;
}

public void setAge(int age) {
    myAge = age;
}

public void setGender(String gender) {
    myGender = gender;
}

public String toString() {
    return myName + ", age: " + myAge + ", gender: " + myGender;
}

}

私の次のクラスは私の教師クラスです:

public class Teacher extends Person {
private static int salary;
private static String subject;

public Teacher(String name, int age, String gender, String subject, int salary) {
    super(name, age, gender);
    //Constructor
    salary = salary;
    subject = subject;
    public String toString(){


    return super.toString() +", Subject: " + subject + " Salary: " + salary;
}
}

}

私のプログラムの問題は、String Subject と Int Salary を追加しようとしていることです。「トークン "String" の構文エラー、@ 予想される」(Teacher クラスの 12 行目) というエラーが表示され、そのすぐ隣に別のエラーが表示されます:""構文エラー、"EnumBody" を挿入して完了します。 BlockStatement」(Teacher クラスの 12 行目)。

したがって、私がやろうとしているのは、新しい値を親クラスに追加することだけです。これにより、ユーザーを追加するときに、給与や件名などを入力できるようになります。よくわからない場合は申し訳ありません。一部の人にとってはわかりやすいかもしれませんが、私が十分に明確でない場合はお知らせください。

どんな助けでも大歓迎です!

ありがとう、サリー

4

2 に答える 2

7

私はあなたのコードをすべて調べたわけではありませんが、これが問題だと思います:

public Teacher(String name, int age, String gender, String subject, int salary) {
    super(name, age, gender);
    //Constructor
    salary = salary;
    subject = subject;
    public String toString(){

    return super.toString() +", Subject: " + subject + " Salary: " + salary;
}

toStringコンストラクターの途中でオーバーライドを開始しました。toStringコンストラクターを閉じてから、メソッドを開始する必要があります。

public Teacher(String name, int age, String gender, String subject, int salary) {
    super(name, age, gender);
    //Constructor
    salary = salary;
    subject = subject;
}

public String toString() {    
    return super.toString() + ", Subject: " + subject + " Salary: " + salary;
}

理想的には、@Overrideアノテーションを使用して、実際にスーパークラス メソッドもオーバーライドしていることを検証するようコンパイラに指示します。

@Override
public String toString() {    
    return super.toString() + ", Subject: " + subject + " Salary: " + salary;
}
于 2012-12-12T21:02:07.597 に答える
2

1 つの問題は次のとおりです。

public Teacher(String name, int age, String gender, String subject, int salary) {
    super(name, age, gender);
    //Constructor
    salary = salary;
    subject = subject;
    public String toString(){


    return super.toString() +", Subject: " + subject + " Salary: " + salary;
}
}

メソッドtoString()はコンストラクター内にあります。コンストラクタの外に移動します。

public Teacher(String name, int age, String gender, String subject, int salary) {
        super(name, age, gender);
        //Constructor
        salary = salary;
        subject = subject;
    }

   public String toString(){
       return super.toString() +", Subject: " + subject + " Salary: " + salary;
    }
于 2012-12-12T21:01:24.750 に答える