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
  }
}

转自:https://blog.csdn.net/column/details/scalalearning.html

你可能感兴趣的:(Scala)