scala教程:包package

文件夹

我们在使用电脑时,为了更好的管理文件,会创建多个文件夹,比如:

  • 学习资料
  • 电影
  • 游戏

package包

为了更好地组织类,scala 提供了包机制,用于区别类名的命名空间。

作用

  1. 防止命名冲突

  2. 当类很多时,把 功能相似 的类或接口 放同一个包中,方便类的查找和使用。就相当于图书馆、书店,给书分类分书架

  3. 控制访问范围

包的命名

命名规则

只能包含 字母、数字、下划线

但 不能用数字开头,也不要使用关键字

命名规范

一般是小写字母+小圆点.,域名倒写

com.公司名.项目名.业务模块名

例子:

com.taobao.order //淘宝,订单模块
edu.qinghua.student.clazz //清华,学生管理系统,班级管理模块
com.oracle.java.emp //oracle,java项目,员工管理模块

包的使用

方式一(类似java)

当类在某个包下,那么该类第一行必须写:

package 包名;

注意: scala包名 和 文件所在路径 不需要一致,这点与java不同

方式二(嵌套风格)

通过嵌套的风格表示层级关系,如下

package com{
    package taobao{
        package order{

        }
    }
}

特点:

  1. 一个源文件中可以声明多个 package包

  2. 子包中的类可以直接访问父包中的内容,而无需导包

嵌套风格

内部包的类访问外部类

package com {
  object Outer {
    var out: String = "out"
  }
  package taobao {
    object Inner {
      val in: String = "in"
      def main(args: Array[String]): Unit = {
        println(Outer.out) //子包访问父包无需导包
        Outer.out="out2" //修改值
        println(Outer.out)
      }
    }
  }
}

外部类访问内部包的类

父包访问子包需要导包

package com {
  //父包访问子包中的类需要导包
  import com.taobao.Inner2
  object Outer2 {
    var out: String = "out"
    def main(args: Array[String]): Unit = {
      println(Inner2.in)
      Inner2.in="out2" //修改值
      println(Inner2.in)
    }
  }
  package taobao {
    object Inner2 {
      var in: String = "in"
    }
  }
}

原文出处:/show_1IX1CXavmste.html