gpt4 book ai didi

Scala - 新对象与对象扩展

转载 作者:行者123 更新时间:2023-12-04 10:08:21 24 4
gpt4 key购买 nike

使用 new 运算符定义对象与通过扩展类定义独立对象有什么区别?

更具体地说,给定类型 class GenericType { ... } , val a = new GenericType 和有什么区别和 object a extends GenericType ?

最佳答案

作为一个实际问题,object声明的初始化机制与 new 相同在字节码中。但是,有很多不同之处:

  • object作为单例——每个都属于一个只存在一个实例的类;
  • object被延迟初始化——它们只会在第一次被引用时被创建/初始化;
  • 一个 objectclass (或 trait )同名是同伴;
  • object 上定义的方法在伴随服务器上生成静态转发器class ;
  • object 的成员可以访问同伴的私有(private)成员class ;
  • 在搜索隐式时,会查看相关* 类或特征的伴随对象。

  • 这些只是我能想到的 bat 的一些差异。可能还有其他人。

    * 什么是“相关”类或特征是一个较长的故事——如果您有兴趣,请查看 Stack Overflow 上的问题来解释它。查看 scala 的 wiki如果您找不到它们,请标记。

    关于Scala - 新对象与对象扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182735/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com