You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术疑问:访问嵌套类或类成员时,父类何时加()何时不加?

父类后加不加()的核心原因:静态嵌套类 vs 依赖实例的内部类

这两种写法的差异,本质是嵌套类的类型不同,不管是Kotlin还是Java等其他面向对象语言,逻辑都是一致的:

  • 不加()的场景:Outer.Nested()
    这里的Nested是静态嵌套类(Kotlin里直接用class Nested定义在Outer内部)。它属于Outer这个类本身,和外部类的实例完全无关,就像类的静态方法、静态变量一样,直接通过类名就能访问,所以Outer后面不需要加()创建实例。

  • 加()的场景:Outer().Nested()
    这里的Nested是内部类(Kotlin里需要用inner class Nested声明)。它持有外部类Outer的实例引用,必须先创建Outer的实例(也就是Outer()),才能访问这个内部类并创建它的对象。

举个Kotlin代码例子更直观:

// 静态嵌套类:不依赖外部类实例
class Outer {
    class Nested {
        fun foo() = println("我是静态嵌套类的foo方法")
    }
}

// 内部类:必须绑定外部类实例
class Outer2 {
    inner class Nested {
        fun foo() = println("我是内部类的foo方法")
    }
}

fun main() {
    // 直接通过类名访问静态嵌套类
    Outer.Nested().foo()
    
    // 先创建外部类实例,再访问内部类
    Outer2().Nested().foo()
}

内容的提问来源于stack exchange,提问作者Hyejung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:25:42