2

好的,所以我的程序有 4 个不同的类,我正在尝试在我的一个子类中添加一个新变量。我将展示所有涉及的类的代码,然后解释到底是什么错误。

第一个代码是我的人员类:

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

}

所以我的程序的问题是,我正在尝试添加字符串主题和 Int Salary。我收到一个错误,一直说“令牌“字符串”上的语法错误,@预期”(教师课程的第 12 行),然后旁边的另一个错误说:“”语法错误,插入“EnumBody”来完成BlockStatement”(教师类的第 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

一个问题是:

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 回答