基本语法

1)基本语法

package 包名

2)Scala包的三大作用(和Java一样)

(1)区分相同名字的类

(2)当类很多时,可以很好的管理类

(3)控制访问范围

包的声明

两种方式:

  • 和Java声明方式一样(主流)

    package com.atguigu.scalal1015.day03.pack

  • 包语句(几乎没有)

在java中一般一个.java文件只写一个类,但是在scala’中, 一个 .scala文件中一般会写多个类.将来所有的类会默认在一个包中

  1. package aa{
  2. class A
  3. }

包的使用

如何导包和导类

在文件的最顶层导

  • 如果我想使用HashMap的话
    import java.util.HashMap
  • 如果想同时导出多个的话
    import java.util.{TreeMap, HashMap}
  • 排除导包,比如说我java.util包下除了HashMap以外其它类都需要导入
    这个意思是把HashMap的别名设置为空的,然后再给其它的都导入,
    import java.util.{HashMap => , }
  • 给HashMap起个别名
    import java.util.{HashMap=>HM}
    那么使用的时候就直接用HM,
import java.util.{TreeMap, HashMap}

object Pack1 {
  def main(args: Array[String]): Unit = {

    new HashMap[String, String]()
    new TreeMap[String, String]()

  }
}

在代码的任何的需要的地方导包

什么时候需要用了什么时候导包,比如说我就想在Main函数里面使用,那么就在Main函数里面导包,Main函数外面不能使用

def main(args: Array[String]): Unit = {
    import java.util.HashMap
    new HashMap[String, String]()
  }

通配符导入

比如可以在方法的内部

 在类上面
// 给Java下面的所有的类都导入过来
import java.util._
object Pack1 {
  def main(args: Array[String]): Unit = {
    new HashMap[String, String]()
    new TreeMap[String, String]()

  }
}
在方法内部
  def main(args: Array[String]): Unit = {
    //  在方法内部给Java下面的所有的类都导入过来
    import java.util._;
    new HashMap[String, String]()
    new TreeMap[String, String]()

  }

包对象

就是定义一个方法,这个方法在当前包下的类,或者子包下的类都可以使用

定义包对象里面的方法

// 这个对象的内的所有属性和方法, 在pack包内的所有的类可以直接使用
package object pack {
  def foo() = println("foo...")

}

包内的别的方法调用对象里面的方法

package pack

object Pack2 {
  def main(args: Array[String]): Unit = {
    foo()
  }
}