首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >控制父函数调用--菱形问题?

控制父函数调用--菱形问题?
EN

Stack Overflow用户
提问于 2018-02-06 04:00:36
回答 1查看 44关注 0票数 0

在下面的代码中,如果我打印DDD().hey(),我将看到内部的'9‘然后是1的输出。

3是控制这种vs约定的一种方法吗?例如,如果我想强制CCC的嘿()而不是BBB的(而不是简单地交换混入顺序)发生该怎么办?

代码语言:javascript
运行
复制
trait AAA {
  def hey(): Int  
}

trait BBB extends AAA {
  override def hey(): Int = 1
}

trait CCC extends AAA {  
  override def hey(): Int = 5
}

case class DDD() extends CCC with BBB {
  override def hey(): Int = 9

  def test(): Int = {
    println("Inside: "+hey())
    super.hey()  // Can I control what 'super' means?  BBB or CCC?
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-06 04:42:09

你当然可以:

代码语言:javascript
运行
复制
super[CCC].hey() // 5
super[BBB].hey() // 1

您可能还想阅读有关linearization order的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48630534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档