![Scala编程(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/446/43738446/b_43738446.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
6.3 重新实现toString方法
当我们在前一节中构建Rational实例时,编译器打印了“Rational@ 5dc7841c”。编译器是通过对Rational对象调用toString方法来获取这个看上去有些奇怪的字符串的。Rational类默认继承了java.lang.Object类的toString实现,这个实现只是简单地打印出类名、@符号和一个十六进制的数字。toString方法的主要意图是帮助程序员,在调试输出语句、日志消息、测试失败报告,以及编译器和调试器输出中给出相应的信息。目前由toString方法提供的结果并不是特别有帮助的,因为它没有给出关于有理数的值的任何线索。一个更有用的toString实现可能是打印出Rational对象的分子和分母。可以通过给Rational类添加toString方法来重写(override)默认的实现,就像这样:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-128-1.jpg?sign=1739062808-maI0DLB499qmpfmgxRaBTTLOOAUXbG53-0-267d1b5c307361bb268e795cd4b10ac3)
在方法定义之前的override修饰符表示前一个方法定义被重写覆盖了(第10章有更多相关内容)。由于Rational(有理数)现在可以漂亮地显示了,我们移除了先前版本的Rational类中那段用于调试的println语句。可以在编译器中测试Rational类的新行为:
![](https://epubservercos.yuewen.com/9944D7/23020655409775506/epubprivate/OEBPS/Images/42832-00-128-2.jpg?sign=1739062808-PaHdWFSjyCPabwALTMXy90sVqNTJ2g38-0-ee599fa10040ae15bc6b82c0f0cc7015)