快学Scala(7) 包和引入

来源:互联网 发布:板式家具开料软件 编辑:程序博客网 时间:2024/06/02 19:25

1. 与Java包的一些不同之处

  • 源文件目录与包之间没有强制关联关系。如属于com.emmairving.dave包中的文件,不一定要存放在com/emmairving/dave文件目录之下
  • 同一个文件当中可以为多个包贡献内容

2. 包语句的两种形式

2.1. 嵌套、串联包语句

// 嵌套包形式package com {    package emmairving {        class Minions{        }        // package语句的位置可以在各个位置        package dave {            class Dave {            }        }        package bob {            class Bob{            }        }    }}// 串联形式package com.emmairving.kevin {    class Kevin {    }    // 串联与嵌套同时使用    package boss {        class Boss {        }    }}

2.2. 文件顶部标记法

// file1// 使用这种方法时,package只能放在文件顶部,不能在中间package com.emmairving// 可以连续放若干个package语句package bobclass Bob{}// 此处不能再使用package语句//package bear
// file2package com.emmairvingpackage bob{    class Bob{    }}package kevin {    class Kevin {    }}

3. 包对象

// 每个包都可以有一个包对象,必须在父包中定义,名字与包一样package com.emmairvingpackage object dave{    // 在包外访问该变量需要使用com.emmairing.dave.name    val name = "Dave"}package dave{    class Dave{      def printName() {        println(name)      }    }}

4. 包可见性

package com.emmairving.daveclass Dave {    // 包可见修饰符    private[dave] def packagePrint() {    }}

5. 引入

  • scala中引入的通配符是下划线(_),不是星号(*)
  • 包路径中可以使用星号,如com.emmairving.*.dave是允许的,但不推荐使用
  • import引入语句可以出现在任何地方,不一定是顶部
  • 隐式引入:每个scala文件自动引入
    1. java.lang._
    2. scala._
    3. Predef._

6. 重命名与隐藏方法

// 可以使用选取器,同时多次引入对象import java.awt.{Color, Font}// 选取器可以重命名对象import java.util.{HashMap=>JavaHashMap, TreeMap=>JavaTreeMap}// 可以使用=>_来隐藏对象// 下面的例子就隐藏了java.util.HashMapimport java.util.{HashMap=>_}  
0 0
原创粉丝点击