对象可以在scala中扩展抽象类吗?

use*_*698 0 abstract-class scala object

我是斯卡拉的新手.我正在尝试创建一个扩展抽象类的Object,如下面的show所示

object Conversions extends UnitConversions
{
 override def inchesToCentimeters(inches:Int) = inches * 2.5
 override def gallonsToLiters(gallons:Int) = gallons * 3.78
 override def milesToKilometers(miles:Int) = miles * 1.6
}

abstract class UnitConversions
{
 def inchesToCentimeters(inches:Int)
 def gallonsToLiters(gallons:Int)
 def milesToKilometers(miles:Int)
}
Run Code Online (Sandbox Code Playgroud)

当我尝试访问对象的成员函数时,我得()这个表达式作为输出.

Conversions.milesToKilometers(20) //I get output ()
Run Code Online (Sandbox Code Playgroud)

更多是以下声明有效???

var ucv:UnitConversions = new Conversions
println(ucv.milesToKilometers(3)) // I get output () here as well
Run Code Online (Sandbox Code Playgroud)

提前致谢 !

Jea*_*art 8

您需要为函数提供返回类型,否则它们将返回Unit:

abstract class UnitConversions {
  def inchesToCentimeters(inches:Int): Double
  def gallonsToLiters(gallons:Int): Double
  def milesToKilometers(miles:Int): Double
}`
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,返回类型是从实现中推断出来的.如果您的抽象类不提供默认实现,也不提供返回类型,则假定它是一个"Unit"函数. (2认同)