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
    }
}

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

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...