如何在继承特征中定义的方法中强制执行子类型?我在里面放什么???以下
trait Organism {
def reproduce(org:???):Bool
}
class Amoeba extends Organism {
def reproduce(org:Amoeba) = {// so cute..}
}
class Dinosaur extends Organism {
def reproduce(org:Dinosaur) = { // so scary}
}
我的客户代码将类似于:
object BoozeParty {
def gonuts() = {
val (maleOrganism:Organism,femaleOrganism:Organism) = getOrganisms()
maleOrganism.reproduce(femaleOrganism)
}
}
无论我通过 getOrganisms() 方法发送恐龙或变形虫,上面的代码都应该工作,因为它返回 (Organism,Organism) 的元组
我想要实现的两个概念是:
- 变形虫知道如何与变形虫交配,而恐龙知道如何与恐龙交配。所以让他们弄清楚错综复杂的细节。
- 恐龙不应该传给变形虫。只有变形虫到变形虫