!!scala private,private[this],public的比较

来源:互联网 发布:python 相关性分析 编辑:程序博客网 时间:2024/04/28 08:48
scala> ///////////////////////scala> class Person{     |   var varName = "Spark"     |   private var priName = "GreenPlum"     |   private[this] var prithisName = "Oracle"     |     |   def getName(){println("Hello " + varName + "," + priName + "," + prithisName)}     |   def getInsName(p : Person){println("Hello " + p.varName + "," + p.priName)}     |   //def getInsName1(p : Person){println("Hello " + p.prithisName)}     | }defined class Personscala> val p1 = new Personp1: Person = Person@7c24a321scala> val p2 = new Personp2: Person = Person@39c294dcscala> p1.varName        --默认public允许实例化后访问res94: String = Sparkscala> p1.priName        --private类型不允许实例化后访问<console>:25: error: variable priName in class Person cannot be accessed in Person              p1.priName                 ^scala> p1.prithisName    --private[this]类型不看作是类的成员,实例化后无法访问<console>:25: error: value prithisName is not a member of Person              p1.prithisName                 ^scala> p1.getInsName(p2)Hello Spark,GreenPlumscala> p2.varName = "Spark2"p2.varName: String = Spark2scala> p1.getInsName(p2)            --prithisName = "Oracle"没有打印出来Hello Spark2,GreenPlumscala> ////////////////////////////scala> class Person{     |   var varName = "Spark"     |   private var priName = "GreenPlum"     |   private[this] var prithisName = "Oracle"  --private[this]类型不看作是类的成员,连自己类的内部方法中都不能访问,定义的时候就报错。     |     |   def getName(){println("Hello " + varName + "," + priName + "," + prithisName)}     |   def getInsName(p : Person){println("Hello " + p.varName + "," + p.priName)}     |   def getInsName1(p : Person){println("Hello " + p.prithisName)}     | }<console>:30: error: value prithisName is not a member of Person         def getInsName1(p : Person){println("Hello " + p.prithisName)}                                                          ^

0 0