- 作用域和访问方式 companion object: 伴生对象 伴生对象是与类关联的对象,可以在类的上下文中直接访问其成员。你可以通过类名直接调用伴生对象中的方法和属性,而不需要创建类的实例
普通变量:普通变量是类的实例变量,必须通过类的实例来访问
-
生命周期和初始化 伴生对象:伴生对象在其包含类被加载时初始化。这意味着伴生对象的成员在类的生命周期内是可用的,并且只会被初始化一次。 普通变量:普通变量的初始化依赖于类的实例化。每次创建类的实例时,都会初始化这些变量。
-
静态行为 伴生对象:伴生对象的行为类似于Java中的静态成员。它们可以包含静态方法和属性,允许在没有实例的情况下访问这些成员。 普通变量:普通变量是实例级的,不能被视为静态成员,必须通过实例来访问。
-
继承和接口实现 伴生对象:伴生对象可以实现接口,但不能继承其他类。这使得伴生对象能够遵循某些契约。 普通变量:普通变量不涉及接口或继承的概念,因为它们是实例的一部分。
-
总结 在Kotlin中,companion object提供了一种在类级别定义静态成员的方式,允许在没有实例的情况下访问这些成员,而普通变量则是实例级的,必须通过类的实例来访问。伴生对象的设计使得Kotlin能够在没有传统静态成员的情况下,仍然实现类似的功能。