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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13848544/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 14:10:19  来源:igfitidea点击:

Adding in String and int to parent class with super.toString

javastringclasssuper

提问by Sully Brooks

Okay, so I have 4 different classes for my program, and I'm trying to add a new variable in one of my subclasses. I will show the code for all of the classes involved and then explain what exactly is wrong.

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

First Code is my Person Class:

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

}

}

my next class is my Teacher Class:

我的下一节课是我的老师课:

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

}

}

So the problem with my program is, I'm trying to add in the String Subject and the Int Salary. I'm getting an error that keeps saying "Syntax error on token "String", @ expected"(Line 12 of the Teacher Class) and then another one right next to it saying:""Syntax error, insert "EnumBody" to complete BlockStatement"(line 12 of the Teacher Class).

所以我的程序的问题是,我试图添加 String Subject 和 Int Salary。我收到一个错误,一直说“令牌“字符串”上的语法错误,@预期”(教师类的第 12 行)然后紧挨着它的另一个说:“语法错误,插入“EnumBody”以完成BlockStatement”(教师类第 12 行)。

So all I am trying to do is add the new values into my parent class so that when I go to add in a user I can enter their salary and subject and so on. Sorry if i'm not too clear. It might be in plain sight for some of you, if i'm not clear enough please let me know.

所以我要做的就是将新值添加到我的父类中,这样当我添加用户时,我就可以输入他们的薪水和科目等。对不起,如果我不太清楚。对于你们中的一些人来说,这可能是显而易见的,如果我不够清楚,请告诉我。

Any help is greatly appreciated!

任何帮助是极大的赞赏!

Thanks, Sully

谢谢,苏利

回答by Jon Skeet

I haven't looked all through your code, but I believe this is the problem:

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

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

You've started overriding toStringin the middle of the constructor. You need to close the constructor, then start the toStringmethod:

您已经开始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;
}

Ideally, use the @Overrideannotation to tell the compiler to validate that you really areoverriding a superclass method, too:

理想情况下,使用@Override注释告诉编译器验证您是否确实覆盖了超类方法:

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

回答by kosa

One issue is:

一个问题是:

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

Your toString()method is inside constructor. Move it to outside the constructor.

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