java - 使用 super.toString 将 String 和 int 添加到父类中

标签 java string class super

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

第一个代码是我的 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;
}
}

}

所以我的程序的问题是,我试图添加字符串主题和整数工资。我收到一个错误,一直显示“ token “String”上的语法错误,@预期”(教师类第 12 行),然后旁边的另一个错误显示:“”语法错误,插入“EnumBody”以完成BlockStatement”(教师类第 12 行)。

所以我想做的就是将新值添加到我的父类中,以便当我添加用户时我可以输入他们的工资和主题等。抱歉,如果我不太清楚。对于某些人来说可能是显而易见的,如果我不够清楚,请告诉我。

非常感谢任何帮助!

谢谢, 苏利

最佳答案

我没有仔细查看你的代码,但我相信这就是问题所在:

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注释告诉编译器验证您是否真的正在重写父类(super class)方法:

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

关于java - 使用 super.toString 将 String 和 int 添加到父类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848544/

相关文章:

java - 我如何告诉 jackson 忽略我无法控制源代码的属性?

python - 如何提取字符串中与关键字列表中的某个单词匹配的单词

java - 如何在java中将字符串中的“替换为空白?

c++ - 防止通过纯虚函数实例化类?

c++ - 如何为模板类重载 % 运算符?

python - 两个Python类实例相互引用

java - 弱引用中的强引用

java - 与通过 android studio 安装相比,作为 APK 安装时,Retrofit 的行为不同且无法解析

java - XSLT 2.0 xsl :value-of separator attribute not working in Java 1. 7 与 apache.xalan

python - for 循环不会迭代函数中的字符串,但不会迭代函数 - python 3