1. 程式人生 > >8.Scala包和import

8.Scala包和import

一.包

//包,平常我們還是想Java那樣去使用包
package scala{
  class Cat{
    def eat()={println("cat eat ...")}
  }
}

二.訪問控制

  • 無任何修飾符:任何地方都可以使用

  • private[scala]:在定義的類中可以訪問,在scala包及子包中可以訪問

  • private[this]:只能在定義的類中訪問,即使伴生物件也不能訪問團

  • private:在定義的的類及伴生物件中可以訪問,其它地方不能訪問

  • protected[scala]:在定義的類及子類中可以訪問,在scala包及子包中可以訪問

  • protected[this]:只能在定義的類及子類中訪問,即使伴生物件也不能訪問

  • protected:在定義的類及子類中訪問,伴生物件可以訪問,其它地方不能訪問

三.包物件

//包物件
//利用package關鍵字定義單例物件
package object Math{
  val PI = 3.1415
  val THETA = 2.0
  val SIGMA = 1.9
}
class Compute{
  def computeArea(r:Double) = Math.PI * r * r
}

四.import

//隱藏引入
import scala._
import Predef._

//重新命名
import java.util.{HashMap => JavaMap}
import scala.collection.mutable.HashMap

//類隱藏
//通過HashMap => _,隱藏起來
import java.util.{HashMap=>_,_}
import scala.collection.mutable.HashMap

五.內部類

class OuterClass{
  //即使定義為 private[this] var x:Int = 0,也可行
  private var x:Int = 0
  
  //def getInnerY = y  //外部類不能訪問內部類的成員
  class InnerClass{
    private var y:Int = 0
    //內部類可以直接訪問外部類的成員變數和成員方法
    def getOuterX = x
  }
}