【发布时间】:2014-09-28 17:35:21
【问题描述】:
考虑一下这段代码(这是一种类型安全的单元):
abstract class UnitsZone {
type ConcreteUnit <: AbstractUnit
abstract class AbstractUnit(val qty: Int) {
SOME_ABSTRACT_MEMBERS
def +(that: ConcreteUnit): ConcreteUnit = POINT_OF_INTEREST.apply(this.qty + that.qty)
def apply(param: Int) = SOME_IMPLEMENTATION
}
def apply(qty: Int): ConcreteUnit
}
object Imperial extends UnitsZone {
type ConcreteUnit = Pound
class Pound(override val qty: Int) extends AbstractUnit(qty) {
CONCRETE_MEMBERS_HERE
}
def apply(qty: Int) = new Pound(qty)
}
为了使整个工作正常,我需要调用外部对象的apply 方法来实现继承(在上面的代码中标记为POINT_OF_INTEREST)。考虑到这一点,我敢于问几个问题:
- 有什么办法吗?
- 如果有很多,每个的优缺点是什么?
- 如果您认为整个事情都是错误的,那么您实现此类功能的正确方法是什么?
【问题讨论】:
标签: scala inheritance inner-classes abstract-type