【问题标题】:toString methodtoString 方法
【发布时间】:2011-04-02 13:29:58
【问题描述】:

我想在Item 类中添加一个toString 方法,该方法返回其中项目的标题。

我需要确保DVD 类中的toString 方法调用Item 中的toString 方法,以便它可以返回一个包含标题和导演的字符串。

Item 是超类,DVD 是子类。

  public class Item
   {
  private String title;
  private int playingTime;
  private boolean gotIt;
  private String comment;

public Item(String theTitle, int time)
{
    title = theTitle;
    playingTime = time;
    gotIt = false;
    comment = "<no comment>";
}

// Getters and setters omitted

public void print()
{
    System.out.print(title + " (" + playingTime + " mins)");
    if(gotIt) {
        System.out.println("*");
    } else {
        System.out.println();
    }
    System.out.println("    " + comment);
}

}

 public class DVD extends Item 
 {
 private String director;

public DVD(String theTitle, String theDirector, int time)
{
    super(theTitle, time);
    director = theDirector;
}

// Getters and setters omitted

public void print()
{
    System.out.println("    director: " + director);
}

}

【问题讨论】:

  • 我已经改写了这个问题以使其更具可读性,如果这不是您的意思,请随时回滚。
  • 如果这是家庭作业,请标记它

标签: java


【解决方案1】:

项目toString:

public String toString()
{
  return title;
}

DVDtoString:

public String toString()
{
  return super.toString() + " director: " + director;
}

另外,我不知道您要对此做什么,但我会将这些 print() 方法放在这些类中。

您最好返回字符串表示并将其打印到其他地方(这样您就可以在不模拟 System.out 的情况下测试此类)

干杯

【讨论】:

    【解决方案2】:

    每个 Java 类中已经定义了一个 toString 方法(它继承了 Object 的 toString)。但它会返回一个实际上毫无意义的值(AFAIR,JDK 中实例的内部地址/ID - 我可能错了)。

    您需要做的是覆盖该方法并使其返回String,即Item 的标题。对于 DVD 类,您必须覆盖 toString 并使其成为由标题和导演串联组成的字符串。

    对于Item 类,您的方法应如下所示:

    public String toString(){
       return this.title;
    }
    

    您应该能够使用相同的想法为 DVD 实现toString。

    【讨论】:

    • @Pablo Fernandez:我不想只是发布代码并提交解决方案。这看起来太像家庭作业了。我已经发布了它是如何完成的并提供了示例代码。 OP 可以使用它来编写他的解决方案。但是,如果我只是发布代码,大多数作业提问者只会使用它而不会学到任何东西。然而,这一点没有实际意义,因为您的答案已经给出了代码。
    • @MAK 该问题未标记为作业。这是一个问答网站,如果 PO 想要教程,他肯定会在别处找到它
    • @Pablo Fernandez:您认为每个懒得学习/自己做作业的人都会将自己的问题标记为“作业”吗?这是一个问答网站,而不是“外包你的作业”网站。我并不是说寻求家庭作业的帮助/提示是不行的,但我不支持鼓励人们来这里并为他们完成工作。它利用了可以帮助人们学习或解决实际问题的人的善意和时间。
    • @Pablo Fernandez:另外,请参阅discussion about this in meta。
    • @MAK 感谢您指出这一点。如果问题确实是家庭作业,那么您的答案是正确的,值得投票(并且也被标记为已接受)。可悲的是我能做的就是给你+1
    猜你喜欢
    • 2016-07-21
    • 2021-10-03
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2017-05-25
    相关资源
    最近更新 更多