0%

scala访问修饰符

scala访问修饰符

在java中有四种访问修饰符,public、protected、default、private,那么scala中呢?

  • 当属性访问权限为默认时,从底层看属性是private的,但是因为提供了 xxx_$eq()[类似setter]/xxx()[类似getter] 方法,因此从使用效果看是任何地方 都可以访问)

  • 当方法访问权限为默认时,默认为public访问权限

  • private为私有权限,只在类的内部和伴生对象中可用

  • protected为受保护权限,scala中受保护权限比Java中更严格,只能子类访问, 同包无法访问(这里是编译器限制的,编译完成java之后其实是public的)

  • 在scala中没有public关键字,即不能用public显式的修饰属性和方法

  • 包访问权限(表示属性有了限制。同时包也有了限制),这点和Java不一样, 体现出Scala包使用的灵活性

    1
    2
    3
    4
    class Dog {
    // 包访问权限 表示service包可以使用
    private[service] var name: String = _
    }