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

Can an object extend abstract class in scala?

我是斯卡拉的新手。我试图创建一个扩展抽象类的对象,如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
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)
}

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

1
Conversions.milesToKilometers(20) //I get output ()

下面的陈述是否有效????

1
2
var ucv:UnitConversions = new Conversions
println(ucv.milesToKilometers(3)) // I get output () here as well

事先谢谢!


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

1
2
3
4
5
abstract class UnitConversions {
  def inchesToCentimeters(inches:Int): Double
  def gallonsToLiters(gallons:Int): Double
  def milesToKilometers(miles:Int): Double
}`


关于这个问题:

More over is the below statement valid ???

var ucv:UnitConversions = new Conversions println(ucv.milesToKilometers(3))

这无法编译。object基本上是单例的,可以用于"静态"方法。创建单个实例的多个实例是没有意义的。看看这个问题:scala中对象和类的区别