Object Class及其toString()

时间:2014-10-23 04:33:12

标签: java inheritance tostring

超类学生包含: 一个构造函数,接受与学生所在学校名称相对应的String 一个toString方法,返回'学生在X',其中X是学生所在学校的名称。

为子类HighSchoolStudent编写一个类定义,其中包含: 接受String的构造函数,该String用作超类构造函数的参数 一个toString方法,返回'X'的高中生。此方法必须使用其超类的toString方法。

教师注释:您只编写子类。 在它中你将有一个构造函数(它有一个参数 - 一个字符串),它将调用超类的构造函数,并将此参数传递给它。 它还将通过返回“高中”,然后返回超类的toString方法中返回的内容来覆盖tostring方法。

public class HighSchoolStudent extends Student
{
    public String HighSchoolStudent()
    {
        return "high school student at "+super.toString();
    }
}
HighSchoolStudent.java:1: error: constructor Student in class Student cannot be applied to given types;
public class HighSchoolStudent extends Student
       ^
  required: String
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error
1 public class HighSchoolStudent extends Student
2 {
3   public String HighSchoolStudent()
4   {
5       return "high school student at "+super.toString();
6   }
7 }

3 个答案:

答案 0 :(得分:0)

您的错误是因为该类被称为HighSchoolStudent,并且您还试图为您的方法HighSchoolStudent命名。这仅允许作为构造函数的名称。要覆盖toString,您需要:

public class HighSchoolStudent extends Student
{
    @Override
    public String toString()
    {
      return "high school student at "+super.toString();
    }
}

答案 1 :(得分:0)

在Java中,具有相同名称的方法是构造函数, 所以,它应该是:

public HighSchoolStudent(String schoolName) {
    super(schoolName);
}

和toString方法应该是:

public String toString() {
    return "high school " + super.toString();
}

答案 2 :(得分:0)

public class HighSchoolStudent extends Student
{
    public HighSchoolStudent(String schoolName)
    { 
        super(schoolName);
    }
    public String toString() 
    {
        return "high school " + super.toString();
    }
}