- Scala编程(第4版)
- (德)马丁·奥德斯基 (美)莱斯·彭 比尔·文纳斯
- 345字
- 2021-06-10 14:34:10
6.3 重新实现toString方法
当我们在前一例中创建Rational实例时,解释器打印了“Rational@6121a7dd”。解释器是通过对Rational对象调用toString来获取这个看上去有点奇怪的字符串的。Rational类默认继承了java.lang.Object类的toString实现,这个实现只是简单地打印出类名、@符和一个十六进制的数字。toString的主要意图是帮助程序员在调试输出语句、日志消息、测试失败报告,以及解释器和调试器输出中给出相应的信息。目前由toString提供的结果并不是特别有帮助,因为它没有给出关于有理数的值的任何线索。一个更有用的toString实现可能是打印出Rational的分子和分母。可以通过给Rational类添加toString方法来重写(override)默认的实现,就像这样:
![](https://epubservercos.yuewen.com/E8DF3B/20205397808551606/epubprivate/OEBPS/Images/40272-00-130-1.jpg?sign=1739045054-DjaoXDVbXe0CGiV2P3546qqgi6oAP43Z-0-5c1ccb57b29d3aa7d475e23b1ca1319d)
在方法定义之前的override修饰符表示前一个方法定义被重写覆盖了(第10章有更多相关内容)。由于Rational(有理数)现在可以漂亮地显示了,我们移除了先前版本的Rational中那段用于调试的println语句。可以在解释器中测试Rational的新行为:
![](https://epubservercos.yuewen.com/E8DF3B/20205397808551606/epubprivate/OEBPS/Images/40272-00-130-2.jpg?sign=1739045054-jaX3vCniCjSHi5GfUdXa8KVJnCScBtop-0-6b41e7dba5d43c12cb1e044fd47cdde1)