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
4class Dog {
// 包访问权限 表示service包可以使用
private[service] var name: String = _
}