包的三大作用(和java相同)
* 1. 区分相同名称的类
* 2. 当类很多时,可以很好的管理类
* 3. 控制访问权限
*
包的命名规范
* 1. 只能包含数字、字母、下划线、小圆点. 但是不能数字开头,也不能使用关键字
* 2. 一般都是小写字母加.
* 3. com.公司名称.项目名称.业务模块名称
*
包说明(包语句) / 包的嵌套风格
* 说明
* scala有两种包的管理风格
* 风格1 像Java一样,一个源文件是属于一个包,一个包下有众多源文件
* 风格2 一个源文件中可以声明多个包,子包中的类,可以访问夫包中的类,无需导包
* 语法
* package com {
* class
* object
* package dxm {
* class
* object
* }
* }
*
包对象
* 说明
* 在scala中可在每个包内定义一个同名的包对象,定义在包对象中的成员,可以成为做在包
* 内所有class和object的共享变量,直接被访问
* 语法
* package object 对象名称 { 成员 }
*
导包说明
* 语法 import com.xxx
* 说明
* 1. 全局导入 在文件顶部import导入,整个文件中所有的类都可以使用
* 2. 局部导入 在其作用范围内都可以使用
* 3. 通配符导入 import java.util._
* 4. 给类起别名 import packOuter.packInner.{IuterClass => dawang}
* 5. 指定类名导入 import java.util.{HashSet, ArrayList}
* 6. 屏蔽类 import java.util.{ArrayList =>_,_}
* */
/**
  * @author gaocun
  * @create 2021-10-20 6:56 PM
  */
object 包_01 {
  /*
  * 包的三大作用(和java相同)
  *       1. 区分相同名称的类
  *       2. 当类很多时,可以很好的管理类
  *       3. 控制访问权限
  *
  * 包的命名规范
  *       1. 只能包含数字、字母、下划线、小圆点. 但是不能数字开头,也不能使用关键字
  *       2. 一般都是小写字母加.
  *       3. com.公司名称.项目名称.业务模块名称
  *
  * 包说明(包语句) / 包的嵌套风格
  *     说明
  *        scala有两种包的管理风格
  *           风格1 像Java一样,一个源文件是属于一个包,一个包下有众多源文件
  *           风格2 一个源文件中可以声明多个包,子包中的类,可以访问夫包中的类,无需导包
  *               语法
  *               package com {
  *                   class
  *                   object
  *                   package dxm {
  *                       class
  *                       object
  *                   }
  *               }
  *
  * 包对象
  *     说明
  *        在scala中可在每个包内定义一个同名的包对象,定义在包对象中的成员,可以成为做在包
  *        内所有class和object的共享变量,直接被访问
  *     语法
  *         package object 对象名称 { 成员 }
  *
  * 导包说明
  *     语法 import com.xxx
  *     说明
  *         1. 全局导入    在文件顶部import导入,整个文件中所有的类都可以使用
  *         2. 局部导入    在其作用范围内都可以使用
  *         3. 通配符导入   import java.util._
  *         4. 给类起别名   import packOuter.packInner.{IuterClass => dawang}
  *         5. 指定类名导入  import java.util.{HashSet, ArrayList}
  *         6. 屏蔽类       import java.util.{ArrayList =>_,_}
  * */
  def main(args: Array[String]): Unit = {

  }
}

// 包的嵌套风格 + 包对象
package packOuter {


  //定义 包对象
  package object outerObject {
    var name = "大王"

    def find = println("大王叫我来巡山")
  }


  class OuterClass {
    val id = 100
    println(outerObject.name)
    outerObject.find

    def show = println("This's OuterClass")
  }

  object outer_test {
    def main(args: Array[String]): Unit = {
      new OuterClass().show
      // 局部导入包 + 为导入的类起别名
      import packOuter.packInner.{IuterClass => dawang}
      new dawang().show
    }
  }

  package packInner {

    class IuterClass {
      val id = 100

      def show = println("This's IuterClass")
    }

    object inner_test {

      def main(args: Array[String]): Unit = {
        new IuterClass().show
        new OuterClass().show
      }
    }


  }


}