为什么不可能在特征中定义此构造函数?

芬克尔森

我在马丁·奥德斯基(Martin Odersky)的书中读到,特质扩展了超类AnyRef。所以对我来说就像一堂课。我知道我不能在类中通常使用的特征中使用默认构造函数

class B(s: String)

同时,我看到不可能做这样的事情

trait A {
  def this(s: String) {
    super()  
  }
}

编译器说:

Error:(14, 7) 'this' expected but 'super' found.
  super()
  ^

为什么?

迈克尔·扎亚克(Michael Zajac)

直接来自Scala语言规范

特质是一类,应作为混合添加到其他某个类中。与普通类不同,特征不能具有构造函数参数此外,没有构造函数参数传递给trait的超类。这是不必要的,因为特征是在初始化超类之后初始化的。

归结为:

  1. 特质可以归结为没有参数的java接口,这对于java-interop来说很好。

  2. 虽然在理论上允许特征具有构造函数参数是可能的,但它使语言变得比所需的更加复杂。几乎可以肯定有一种方法可以完成相同的功能,而无需使用特征构造器参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么不可能在EventBus中注册活动?

来自分类Dev

是否不可能在订阅中捕获错误?

来自分类Dev

不可能在硒中定位元素

来自分类Dev

如果不可能在 CoC 上进行 O(1) 预测,那么为什么会这样呢?

来自分类Dev

为什么不可能在 Java 中使用 if 语句构建二进制信号量

来自分类Dev

为什么此代码可能在C ++中崩溃(指针返回)?

来自分类Dev

在PostgreSQL中不可能在两个同级表之间映射表吗?

来自分类Dev

真的不可能在Windows 10中禁用更新吗?

来自分类Dev

为什么dcast不可能传递非聚合函数?

来自分类Dev

没有服务器,是否不可能在浏览器中实现联合网络游戏?

来自分类Dev

为什么编译器报告“可能在此函数中未初始化使用”?

来自分类Dev

为什么在Haskell中不可能分割整数?

来自分类Dev

为什么在C中不可能重载?

来自分类Dev

是否有可能在派生类构造函数中捕获从基类构造函数抛出的异常

来自分类Dev

为什么派生类的构造函数只能在C ++的类中定义?

来自分类Dev

是否不可能在客户端永久更改客户端的Web代码?

来自分类Dev

为什么会出现错误24:也可能在asm中打开文件描述符

来自分类Dev

捕获构造函数抛出的异常似乎是不可能的

来自分类Dev

由于使用了Facebook sdks v2,现在不可能在Swift中获得所有用户的好友列表吗?

来自分类Dev

是否有可能在属性的构造函数中获取有关类成员的元数据

来自分类Dev

构造函数定义中的此冒号叫什么?

来自分类Dev

构造函数定义中的此冒号叫什么?

来自分类Dev

为什么我不能在Java中为单个类定义这两个构造函数?

来自分类Dev

什么可能在URL中添加参数?

来自分类Dev

不可能在另一个组件的左侧获得一个 Angular 组件

来自分类Dev

是否不可能在后台有一个每 24 小时被调用一次的代码?

来自分类Dev

vptr是否有可能在构造函数和析构函数之外进行修改?

来自分类Dev

为什么不能在Shell中定义空函数?

来自分类Dev

SML:函数foldl是否接受预定义的列表,或者列表可能在此过程中累积?

Related 相关文章

  1. 1

    为什么不可能在EventBus中注册活动?

  2. 2

    是否不可能在订阅中捕获错误?

  3. 3

    不可能在硒中定位元素

  4. 4

    如果不可能在 CoC 上进行 O(1) 预测,那么为什么会这样呢?

  5. 5

    为什么不可能在 Java 中使用 if 语句构建二进制信号量

  6. 6

    为什么此代码可能在C ++中崩溃(指针返回)?

  7. 7

    在PostgreSQL中不可能在两个同级表之间映射表吗?

  8. 8

    真的不可能在Windows 10中禁用更新吗?

  9. 9

    为什么dcast不可能传递非聚合函数?

  10. 10

    没有服务器,是否不可能在浏览器中实现联合网络游戏?

  11. 11

    为什么编译器报告“可能在此函数中未初始化使用”?

  12. 12

    为什么在Haskell中不可能分割整数?

  13. 13

    为什么在C中不可能重载?

  14. 14

    是否有可能在派生类构造函数中捕获从基类构造函数抛出的异常

  15. 15

    为什么派生类的构造函数只能在C ++的类中定义?

  16. 16

    是否不可能在客户端永久更改客户端的Web代码?

  17. 17

    为什么会出现错误24:也可能在asm中打开文件描述符

  18. 18

    捕获构造函数抛出的异常似乎是不可能的

  19. 19

    由于使用了Facebook sdks v2,现在不可能在Swift中获得所有用户的好友列表吗?

  20. 20

    是否有可能在属性的构造函数中获取有关类成员的元数据

  21. 21

    构造函数定义中的此冒号叫什么?

  22. 22

    构造函数定义中的此冒号叫什么?

  23. 23

    为什么我不能在Java中为单个类定义这两个构造函数?

  24. 24

    什么可能在URL中添加参数?

  25. 25

    不可能在另一个组件的左侧获得一个 Angular 组件

  26. 26

    是否不可能在后台有一个每 24 小时被调用一次的代码?

  27. 27

    vptr是否有可能在构造函数和析构函数之外进行修改?

  28. 28

    为什么不能在Shell中定义空函数?

  29. 29

    SML:函数foldl是否接受预定义的列表,或者列表可能在此过程中累积?

热门标签

归档