微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala – 单个对象的protected [package]和private [package]之间的区别

我试图将对象中存在的方法的访问权限限制为对象所属的包.
方法由包内的许多类使用.我有两个选择:

protected[pkg] object MyObject{....}

要么

private[pkg] object MyObject{....}

它们都工作得很好.
我的问题是,既然对象不能被任何类/对象扩展,那么它们不是等价的吗?

解决方法

顶级,是的,他们最终在Java中公开(不是认访问).

但是也:

package accesstest {
    trait T {
        protected[accesstest] object Foo { def foo = 7 }
        private[accesstest] object Bar { def bar =  8 }
    }

    object Test extends App {
        val t = new T {}
        Console println t.Foo.foo
        Console println t.Bar.bar
        Console println other.Other.foo
    }
}
package other {
    object Other extends accesstest.T {
        def foo = Foo.foo
        //def bar = Bar.bar  // nope
    }
}

所以重要的是封闭物的可扩展性和访问性.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐