7 对象 7.1 编写一种 Conversions 对象,加入 inchesToCentimeters,gallonsToLiters 和 milesToKilometers 办法 Scala 代码 1.object Conversions{ 2. def inchesToCentimeters(){} 3. def gallonsToLiters(){} 4. def milesToKilometers(){} 5.} 7.2 前一种练习不是很面对对象。提供一种通用的超类 UnitConversion 并定义扩展该超类的InchesToCentimeters,GallonsToLiters 和 MilesToKilometers 对象 Scala 代码 1.abstract class UnitConversion{ 2. 3. def inchesToCentimeters(){} 4. def gallonsToLiters(){} 5. def milesToKilometers(){} 6. 7.} 8. 9.object InchesToCentimeters extends UnitConversion{ 10. override def inchesToCentimeters() {} 11.} 12. 13.object GallonsToLiters extends UnitConversion{ 14. override def gallonsToLiters() {} 15.} 16. 17.object MilesToKilometers extends UnitConversion{ 18. override def milesToKilometers() {} 19.} 7.3 定义一种扩展自 java.awt.Point 的 Origin 对象。为什么说这事实上不是个好主意?(认真看 Point 类的办法) Point 中的 getLocation 办法返回的是 Point 对象,如果想返回 Origin 对象,需要 Origin 类才行 Scala 代码 1.object Origin extends Point with App{ 2. 3. override def getLocation: Point = super.getLocation 4. 5. Origin.move(2,3) 6. println(Origin.toString) 7. 8.} 7.4 定义一种 Point 类和一种伴生对象,使得我们能够不用 new 而直接用 Point(3,4)来构造 Point 实例 apply 办法的使用 Scala 代码 1.class Point(x:Int,y:Int){ 2. override def toString: String = "x = " + x + " y = " + y 3.} 4. 5.object Point extends App{ 6. def apply(x:Int,y:Int)={ 7. new Point(x,y) 8. } 9. 10. val p = Point(1,2) 11. println(p) 12.} 7.5 编写一种 Scala 应用程序,使用 App 特质,以反序打印命令行参数,用空格隔开。举例来说,scala Reverse Hello World 应当打印 World Hello Scala 代码 1.object Reverse extends App{ 2. args.reverse.foreach(arg => print(arg + " ")) 3.} 7.6 编写一种扑克牌 4 种花色的枚举,让其 toStri...