相关疑难解决方法(0)

用子类参数覆盖子类方法?

当由子类覆盖时,如何强制基本方法接受相同的特定子类实例?

即:

abstract class Animal {
  def mateWith(that: Animal)
}

class Cow extends Animal {
  override def mateWith...?
}
Run Code Online (Sandbox Code Playgroud)

从逻辑上讲,a Cow应该只能够mateWith另一个Cow.但是,如果我这样做override def mateWith(that: Cow),这实际上并没有覆盖基类方法(我想要它,因为我想强制它在子类中存在)​​.

我可以检查以确保其他实例是Cow类型,并且如果不是则抛出异常 - 这是我最好的选择吗?如果我有更多的动物怎么办?我将不得不重复抛出异常的代码.

inheritance overriding scala

6
推荐指数
1
解决办法
2634
查看次数

Scala使用不同的返回类型来表示相同的方法和参数

我在Scala 2.10.2上尝试定义一个特征

trait Foo {
  def bar(a:String): String
  def bar(a:String): Int
}
Run Code Online (Sandbox Code Playgroud)

获得编译器错误method a is defined twice.什么是正确的语法?

scala

1
推荐指数
2
解决办法
2153
查看次数

标签 统计

scala ×2

inheritance ×1

overriding ×1