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

时间:2016-09-21 16:51:56

标签: scala object abstract-class

我是斯卡拉的新手。我正在尝试创建一个扩展抽象类的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)
}

当我尝试访问对象的成员函数时,我将()此表达式作为输出。

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

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

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

提前致谢!

2 个答案:

答案 0 :(得分:8)

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

abstract class UnitConversions {
  def inchesToCentimeters(inches:Int): Double
  def gallonsToLiters(gallons:Int): Double
  def milesToKilometers(miles:Int): Double
}`

答案 1 :(得分:0)

关于这个问题:

  

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

     

void read(fraction& x); void reduce(fraction& x);

这不会编译。 var ucv:UnitConversions = new Conversions println(ucv.milesToKilometers(3))基本上意味着单身,可以用于"静态"方法。创建单个实例的多个实例是没有意义的。看看这个问题:Difference between object and class in scala