Scala_修飾符

Scala訪問修飾符和Java基本同樣,分別有private、protected、public。默認缺省狀況下,Scala對象的訪問級別是public。
私有成員:用private關鍵字修飾的成員僅在包含了成員定義的類內部或對象內部可見。Java中容許這兩種訪問,它容許外部類訪問內部類的私有成員。
 1 class test{}class Outer{
 2     class Inner{
 3         private def p(){
 4             println( "p")
 5         }
 6         class InnerMost{
 7             p() //正確
 8         }
 9     }
10     //(new Inner).f("Outer") //錯誤,外層類不能訪問被嵌套類的私有成員,Java中支持
11 }
保護成員:Scala比Java中更嚴格。只容許保護成員在定義了該成員的類的子類中被訪問。Java中除定義了該保護成員的類的子類中可被訪問,同一個包下的其餘類也能夠進行訪問。
 1 package p{
 2     class Supper{
 3         protected def p(){
 4             println("p")
 5         }        
 6     }
 7     
 8     class Sub extends Supper{
 9         p() //正確
10     }
11     
12     class other{
13         // (new Supper).p() //錯誤,只有子類能夠。java支持,protected成員在同包下類中也可訪問
14     }
15 }
公共成員:默認public,這樣的成員在任何地方均可以被訪問。
 1 class test{}class Outer{
 2     class Inner{
 3         def p(){
 4             println( "p")
 5         }
 6         class InnerMost{
 7             p() //正確
 8         }
 9     }
10     //(new Inner).f("Outer") //正確 
11 }

做用域保護java

Scala中訪問修飾符能夠經過使用限定詞強調。格式private[x] protected[x]this

X指某個所屬的包、類、單例對象。private[x],讀做「這個成員除了對[]中的類或[]中的包中的類及它們的伴生對象可見外,對其餘全部類都是privatespa

 

Private[this] val x,只能被this訪問,即只能被當前對象訪問code

Private val x,能夠被另外一個對象訪問orm

Java的訪問權限表對象

不寫(default)默認:包內可訪問blog

Private私有:類內可訪問ci

Protected保護:包內和子類可訪問作用域

Public公有:均可訪問ast

相關文章
相關標籤/搜索