一.包
//包,平常我们还是想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
}
}