文章目录
Scala访问权限
知识点概念
private
--同类访问
private[包名]
--包私有; 同类同包下访问
protected
--同类,或子类 //同包不能访问
(default)(public)默认public
--公共访问
1.同类中访问
class User{
// TODO 1.同类中访问,所有权限都可以访问
private var private_name ="zhangsan"
private[_14Scala访问权限] var private__age ="zhangsan" //"_14Scala访问权限"包,以及其子包下的类和对象才能访问此属性
protected var protected_sex ="zhangsan"
var public_email ="zhangsan" //default
def test(): Unit = {
println(this.private__age)
println(this.private_name)
println(this.protected_sex)
println(this.public_email)
}
}
小结:同类任何属性都可this访问
2.同包不同类访问
创建EMP类在User类隔壁,创建User实例,进行访问其属性;
class EMP{
// TODO 2.同包下,不同类访问; EMP类中访问User类属性
val user = new User;
def test(): Unit = {
println(user.public_email)
println(user.private__age)
}
}
小结:同包下仅有public,private[指定当前包]等可以访问属性值
3.不同包访问
3.1在14_Scala访问权限隔壁创建包_14DemoTest
3.2创建Access对象
3.3写入下面代码,精确导入包User
测试使用不同包下属性;
package _14DemoTest
import _14Scala访问权限.Object_Access._ //导入全部包信息
//import _14Scala访问权限._ //此处导入不能使用User
object Access {
def main(args: Array[String]): Unit = {
// TODO 3.不同包下访问权限
var User = new User
println(User.public_email) //也就只能访问public类型
}
}
4.子类权限
同包下
// TODO 4.关于子类权限
class Student extends User{
val user =new User
def test1(): Unit = {
println(user.protected_sex)
}
}
不同包下
测试不同包下子类 权限使用情况
class Demo extends User {
val user = new User
def main(args: Array[String]): Unit = {
println(user.protected_sex)
println(user.public_email)
}
}
小结
private
--同类访问
private[包名]
--包私有; 同类同包下访问
protected
--同类,或子类 //同包不能访问
(default)(public)默认public
--公共访问